Ejemplo n.º 1
0
def importkml(node):
    model = Track()
    coord = node[6][3].text.strip().split(',')
    # uncomment offsets to bring bird to den bosch
    model.longitude = float(coord[0])  # + 0.379028
    model.latitude = float(coord[1])  # - 0.696336
    model.altitude = float(coord[2])

    hex_color = node[4][0].text  # abgr
    model.classifier = color2class[hex_color]

    table = etree.fromstring(node[3].text)
    model.device_info_serial = table[2][1].text
    model.date_time = table[1][1].text
    speeds = table[5][1].text.split()
    model.speed = speeds[0]
    model.speed3d = speeds[1]

    # TODO make name dynamic using Individual table
    model.name = "female gull FAKV"

    # TODO enable when using PostGIS
#     point = "POINT({0} {1} {2})".format(model.latitude,
#                                        model.longitude,
#                                        model.altitude)
#     model.location = WKTSpatialElement(point)

    DBSession.add(model)
Ejemplo n.º 2
0
def main(argv=sys.argv):
    if len(argv) != 3:
        usage(argv)
    config_uri = argv[1]
    kml_uri = argv[2]

    print "parsing kml\n"
    t = etree.parse(kml_uri)
    r = t.getroot()

    setup_logging(config_uri)
    settings = get_appsettings(config_uri)
    engine = engine_from_config(settings, 'sqlalchemy.')
    DBSession.configure(bind=engine)

    Base.metadata.create_all(engine)

    print "Create db\n"

    with transaction.manager:
        for p in r[0][2:]:  # skip linestring
            importkml(p)