def extract_locations(text, fallback_city=None): """ :type text: str :type fallback_city: str :return: list of mainapp.models.Body """ if not fallback_city: fallback_city = settings.GEOEXTRACT_DEFAULT_CITY found_locations = extract_found_locations(text) locations = [] for found_location in found_locations: location_name = format_location_name(found_location) try: location = Location.objects.get(name=location_name) locations.append(location) except Location.DoesNotExist: geodata = get_geodata(found_location, fallback_city) location = Location() location.name = location_name location.short_name = location_name location.is_official = False location.osm_id = None # @TODO if geodata: location.geometry = { "type": "Point", "coordinates": [geodata['lng'], geodata['lat']] } else: location.geometry = None location.save() bodies = detect_relevant_bodies(location) for body in bodies: location.bodies.add(body) locations.append(location) return locations
def import_outline(body: Body, gemeindeschluessel: str): if not body.outline: outline = Location() outline.name = "Outline of " + body.name outline.short_name = body.short_name outline.is_official = False else: outline = body.outline logger.info("Importing outline from {}".format(gemeindeschluessel)) query = query_template_outline.format(gemeindeschluessel) response = requests.post(overpass_api, data={"data": query}) response.raise_for_status() geojson = convert_to_geojson(response.text) outline.geometry = geojson outline.save() body.outline = outline body.save()
def import_outline(body, gemeindeschluessel): if not body.outline: outline = Location() outline.name = 'Outline of ' + body.name outline.short_name = body.short_name outline.is_official = False else: outline = body.outline logger.info("Importing outline from {}".format(gemeindeschluessel)) query = query_template_outline.format(gemeindeschluessel) r = requests.post(overpass_api, data={'data': query}) geojson = convert_to_geojson(r.text) outline.geometry = geojson outline.save() body.outline = outline body.save()
def import_outline(body: Body, ags: Optional[str] = None): ags = ags or body.ags assert ags is not None logger.info("Importing outline from {}".format(ags)) if not body.outline: outline = Location() outline.name = "Outline of " + body.name outline.short_name = body.short_name outline.is_official = False else: outline = body.outline query = format_template(query_template_outline, ags) response = requests.post(overpass_api, data={"data": query}) response.raise_for_status() geojson = osm2geojson.json2geojson(response.text) outline.geometry = geojson outline.save() body.outline = outline body.save()