def query_construction(search_area): nominatim_query=Nominatim().query(search_area) query_01=overpassQueryBuilder(area=nominatim_query.areaId(),elementType=['node','way','relation'], selector=["military"],includeGeometry=True) query_02=overpassQueryBuilder(area=nominatim_query.areaId(),elementType=['node','way','relation'], selector='"landuse"="military"',includeGeometry=True) result_01=Overpass().query(query_01) result_02=Overpass().query(query_02) print("Pronađeno ukupno "+str(result_01.countElements())+" 'military' objekta") print("Pronađeno ukupno "+str(result_02.countElements())+" 'landuse=military' objekta") results=[result_01,result_02] return results
from OSMPythonTools.nominatim import Nominatim import folium from folium.plugins.measure_control import MeasureControl from matplotlib import cm import sys, os sys.path.insert(1, os.path.abspath('..')) from helper.geoJsonHelper import groupBy from helper.geoJsonToFolium import generateFeatureCollectionForGroups, styleFunction, cmMapColorToHex from helper.overPassHelper import OverPassHelper # postfix for f.i. file_names areaName = "pieschen" # area to query pieschen = Nominatim().query('Pieschen, Dresden, Germany') osmDataFiles = OverPassHelper().fetch(pieschen.areaId(), areaName, overrideFiles=False) pieschenCoord = pieschen.toJSON()[0] map = folium.Map(location=[pieschenCoord["lat"], pieschenCoord["lon"]], tiles='Stamen Toner', zoom_start=15) # matplotlib colormap names colormaps = ["hsv", "BrBG", "coolwarm"] objectTypeTagMapping = { "streets": "highway", "buildings": "building", "landuse": "landuse"
from OSMPythonTools.nominatim import Nominatim from OSMPythonTools.overpass import overpassQueryBuilder, Overpass import geopandas import matplotlib.pyplot as plt import pandas as pd from helper.geoJsonConverter import osmObjectsToGeoJSON areaName = "pieschen" # area to query pieschen = Nominatim().query('Pieschen, Dresden, Germany') query = overpassQueryBuilder(area=pieschen.areaId(), elementType="way", selector=["'building'"], out='geom') buildings = osmObjectsToGeoJSON(Overpass().query(query).toJSON()["elements"]) buildingsGdf = geopandas.GeoDataFrame.from_features(buildings["features"]) #buildingsGdf.plot("building", legend = True) buildingsGdf["area"] = buildingsGdf.geometry.area dataFrame = pd.DataFrame(buildingsGdf) #dataFrame.hist(column="area", by="building") avgAreaPerBuildingType = dataFrame.groupby(["building"]).agg( avg_area=("area", "mean"), count=("area", "count")).reset_index() avgAreaPerBuildingType = avgAreaPerBuildingType.sort_values("count") avgAreaPerBuildingType.plot.bar(x="building", y="count") avgAreaPerBuildingType.plot.bar(x="building",
pieschen = Nominatim().query(areaOfInterest) allBuildingsQuery = OsmDataQuery("homes", OsmObjectType.WAYANDRELATIONSHIP, ['"building"', 'abandoned!~"yes"']) osmQueries = [ allBuildingsQuery, OsmDataQuery("borders", OsmObjectType.WAY, [ 'highway~"primary|primary_link|secondary|secondary_link|tertiary|tertiary_link|residential|motorway|unclassified|living_street"' ]), OsmDataQuery("borders_railway", OsmObjectType.WAY, ["'railway'~'rail'"]) ] # https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_polygon_.28poly.29 for filtering based on polygon (if borough based on openDataDresden) # this query can take a while osmData = overPassFetcher.directFetch(pieschen.areaId(), osmQueries) buildings = next(osmData) borders = unionFeatureCollections(*list(osmData)) alreadyBuiltRegions = False if not alreadyBuiltRegions: # Poor Mans Testing #buildings = geojson.FeatureCollection(buildings["features"][:200]) logging.info("Fetched {} buildings".format(len(buildings["features"]))) groups, regionsPerApproach = buildGroupsAndRegions(buildings, borders) else: logging.info("Loading buildings, groups and regions") # TODO: index seems to be messed up when loading? with open("out/data/buildings_pieschen.json",
namedShopsThings = OsmDataQuery( "osm_named_shops", OsmObject.WAYANDNODE, ["name", "shop", 'amenity!~"."', 'leisure!~"."'], "") namedCraftThings = OsmDataQuery( "osm_named_crafts", OsmObject.WAYANDNODE, ["name", "craft", 'amenity!~"."', 'leisure!~"."', 'shop!~"."'], "") namedCompaniesThings = OsmDataQuery( "osm_named_companies", OsmObject.WAYANDNODE, [ "name", "company", 'amenity!~"."', 'leisure!~"."', 'shop!~"."', 'craft!~"."' ], "") osmQueries = [ namedAmenitiesThings, namedCompaniesThings, namedCraftThings, namedCompaniesThings, namedShopsThings ] osmData = OverPassHelper().directFetch(areaId=pieschen.areaId(), osmQueries=osmQueries) unionData = unionFeatureCollections(*osmData) osmFeature = geoFeatureCollectionToFoliumFeatureGroup( unionData, "pink", "Named amenities/leisure/shops/craft/companies in osm", switchLatAndLong=True) osmFeature.add_to(map) # buildingRegions file = open("out/data/apartmentRegions_pieschen.json", encoding='UTF-8') handelsRegisterCompanies = json.load(file)
import json from OSMPythonTools.nominatim import Nominatim import folium from folium.plugins.measure_control import MeasureControl import sys, os sys.path.insert(1, os.path.abspath('..')) from helper.geoJsonHelper import groupBy from helper.overPassHelper import OverPassHelper from helper.OsmDataQuery import OsmDataQuery from helper.OsmObjectType import OsmObjectType pieschen = Nominatim().query('Pieschen, Dresden, Germany') osmQuery = OsmDataQuery("streets", OsmObjectType.WAY, ["'highway'"], "highway") all_streets = next(OverPassHelper().directFetch(pieschen.areaId(), [osmQuery])) street_types = groupBy(all_streets, ["highway"]) piescheonCoord = [pieschen.toJSON()[0]["lat"], pieschen.toJSON()[0]["lon"]] streetMap = folium.Map(location=piescheonCoord, tiles='Stamen Toner', zoom_start=15) icon = folium.Icon(icon="pills", color='lightgray', icon_color='red') folium.Marker(location=piescheonCoord, tooltip="test", icon=icon).add_to(streetMap) for type, streets in street_types.items(): properties = list(streets["features"][0]["properties"].keys()) folium.GeoJson(
import geopandas import matplotlib.pyplot as plt from OSMPythonTools.nominatim import Nominatim import sys, os sys.path.insert(0, os.path.abspath('..')) from helper.overPassHelper import OverPassHelper plt.rcParams["figure.figsize"] = (25, 25) pieschen = Nominatim().query('Pieschen, Dresden, Germany') OverPassHelper().fetch(pieschen.areaId(), "pieschen") highWayFrame = geopandas.read_file("out/data/streets_pieschen.json", driver='GeoJson') print(highWayFrame.size) print(highWayFrame.keys()) plot = highWayFrame.plot(column='highway', legend=True) plt.show() buildingsFrame = geopandas.read_file("out/data/geoPandas_Example.json") print(buildingsFrame.size) print(buildingsFrame.keys()) plot2 = buildingsFrame.plot(column='building', legend=True) plt.show()