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",
Example #4
0
    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",
Example #5
0
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)
Example #6
0
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(
Example #7
0
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()