def test_geometries(): # geometries_from_bbox - bounding box query to return empty GeoDataFrame gdf = ox.geometries_from_bbox(0.009, -0.009, 0.009, -0.009, tags={"building": True}) # geometries_from_bbox - successful north, south, east, west = ox.utils_geo.bbox_from_point(location_point, dist=500) tags = {"landuse": True, "building": True, "highway": True} gdf = ox.geometries_from_bbox(north, south, east, west, tags=tags) fig, ax = ox.plot_footprints(gdf) # geometries_from_point - tests multipolygon creation gdf = ox.geometries_from_point((48.15, 10.02), tags={"landuse": True}, dist=2000) # geometries_from_place - includes test of list of places tags = {"amenity": True, "landuse": ["retail", "commercial"], "highway": "bus_stop"} gdf = ox.geometries_from_place([place1], tags=tags) # geometries_from_address - includes testing overpass settings and snapshot from 2019 ox.settings.overpass_settings = '[out:json][timeout:200][date:"2019-10-28T19:20:00Z"]' gdf = ox.geometries_from_address(address, tags=tags) # geometries_from_xml - tests error handling of clipped XMLs with incomplete geometry gdf = ox.geometries_from_xml("tests/input_data/planet_10.068,48.135_10.071,48.137.osm") # test loading a geodataframe from a local .osm xml file with bz2.BZ2File("tests/input_data/West-Oakland.osm.bz2") as f: handle, temp_filename = tempfile.mkstemp(suffix=".osm") os.write(handle, f.read()) os.close(handle) for filename in ("tests/input_data/West-Oakland.osm.bz2", temp_filename): gdf = ox.geometries_from_xml(filename) assert "Willow Street" in gdf["name"].values os.remove(temp_filename)
def osm_gdf_from_xml(filepath, polygon=None, tags=None): """Create a GeoDataFrame of OSM entities in an OSM-formatted XML file. Args: filepath (str): File path to file containing OSM XML data polygon (shapely.geometry.Polygon, optional): Optional geographic boundary to filter objects. Defaults to None. tags (dict): Dict of tags used for finding objects in the selected area. Results returned are the union, not intersection of each individual tag. Each result matches at least one given tag. The dict keys should be OSM tags, (e.g., building, landuse, highway, etc) and the dict values should be either True to retrieve all items with the given tag, or a string to get a single tag-value combination, or a list of strings to get multiple values for the given tag. For example, tags = {‘building’: True} would return all building footprints in the area. tags = {‘amenity’:True, ‘landuse’:[‘retail’,’commercial’], ‘highway’:’bus_stop’} would return all amenities, landuse=retail, landuse=commercial, and highway=bus_stop. Returns: GeoDataFrame: A GeoDataFrame of OSM entities. """ check_package("osmnx", "https://osmnx.readthedocs.io/en/stable/#installation") import osmnx as ox gdf = ox.geometries_from_xml(filepath, polygon, tags) return gdf