jwass / geopandas_osm Goto Github PK
View Code? Open in Web Editor NEWQuery the OSM Overpass API and get a GeoDataFrame
License: MIT License
Query the OSM Overpass API and get a GeoDataFrame
License: MIT License
I would like to calculate the perimeter length of all ways (with tag man_made=) inside my boundary
length = df.geometry.length
But I'm always getting
AttributeError: 'LineString' object has no attribute 'exterior'
when using your example code and my Sarnia.geojson as input:
with open('Sarnia.geojson') as f:
data = json.load(f)
poly = shapely.geometry.shape(data['features'][0]['geometry'])
df = geopandas_osm.osm.query_osm('way', poly, recurse='down', tags='man_made')
Same sort of error as #4
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-17-4eb7221da34b> in <module>
3
4 # Query for the highways within the `sg_boundary` we obtained earlier from the sg_admin.
----> 5 df2 = geopandas_osm.osm.query_osm('way', sg_boundary, recurse='down', tags='highway')
6
7 # This gives us lots of columns we don't need, so we'll isolate it to the three we do need
G:\Anaconda3\lib\site-packages\geopandas_osm\osm.py in query_osm(typ, bbox, recurse, tags, raw, meta, **kwargs)
87
88 """
---> 89 url = _build_url(typ, bbox, recurse, tags, meta)
90
91 # TODO: Raise on non-200 (or 400-599)
G:\Anaconda3\lib\site-packages\geopandas_osm\osm.py in _build_url(typ, bbox, recurse, tags, meta)
128 #','.join(str(b) for b in (bbox[1], bbox[0], bbox[3], bbox[2])))
129 bboxstr = '(poly:"{}")'.format(
--> 130 ' '.join('{c[1]} {c[0]}'.format(c=c) for c in bbox.exterior.coords))
131
132 if meta:
AttributeError: 'MultiPolygon' object has no attribute 'exterior'
Hi, I get the following error if I run the following code:
import geopandas_osm.osm as osm
import geopandas as gpd
districts=gpd.read_file('data/turin_districts/turin_districts.shp')
districts.crs={'init':'epsg:3003'}
districts=districts.to_crs(epsg=4326)
districts.crs
sansa=districts[districts.DENOM=='San Salvario'].geometry
osm.query_osm('node',sansa[1], recurse='down', tags='highway')
---------------------------------------------------------------------------
HTTPError Traceback (most recent call last)
<ipython-input-94-73ea9ce921fb> in <module>
----> 1 osm.query_osm('node',sansa[1], recurse='down', tags='highway')
~\.conda\envs\gisenv\lib\site-packages\geopandas_osm\osm.py in query_osm(typ, bbox, recurse, tags, raw, meta, **kwargs)
90
91 # TODO: Raise on non-200 (or 400-599)
---> 92 with urlopen(url) as response:
93 content = response.read()
94
~\.conda\envs\gisenv\lib\site-packages\pandas\io\common.py in urlopen(*args, **kwargs)
139 import urllib.request
140
--> 141 return urllib.request.urlopen(*args, **kwargs)
142
143
~\.conda\envs\gisenv\lib\urllib\request.py in urlopen(url, data, timeout, cafile, capath, cadefault, context)
220 else:
221 opener = _opener
--> 222 return opener.open(url, data, timeout)
223
224 def install_opener(opener):
~\.conda\envs\gisenv\lib\urllib\request.py in open(self, fullurl, data, timeout)
529 for processor in self.process_response.get(protocol, []):
530 meth = getattr(processor, meth_name)
--> 531 response = meth(req, response)
532
533 return response
~\.conda\envs\gisenv\lib\urllib\request.py in http_response(self, request, response)
639 if not (200 <= code < 300):
640 response = self.parent.error(
--> 641 'http', request, response, code, msg, hdrs)
642
643 return response
~\.conda\envs\gisenv\lib\urllib\request.py in error(self, proto, *args)
567 if http_err:
568 args = (dict, 'default', 'http_error_default') + orig_args
--> 569 return self._call_chain(*args)
570
571 # XXX probably also want an abstract factory that knows when it makes
~\.conda\envs\gisenv\lib\urllib\request.py in _call_chain(self, chain, kind, meth_name, *args)
501 for handler in handlers:
502 func = getattr(handler, meth_name)
--> 503 result = func(*args)
504 if result is not None:
505 return result
~\.conda\envs\gisenv\lib\urllib\request.py in http_error_default(self, req, fp, code, msg, hdrs)
647 class HTTPDefaultErrorHandler(BaseHandler):
648 def http_error_default(self, req, fp, code, msg, hdrs):
--> 649 raise HTTPError(req.full_url, code, msg, hdrs, fp)
650
651 class HTTPRedirectHandler(BaseHandler):
HTTPError: HTTP Error 414: Request-URI Too Long
May you please add a function to generate the boundary file from a bounding box, similar to https://boundingbox.klokantech.com/ ?
Api requests fails after recent (may 2018) overpass api update with code '400 BadRequest: Element "print" cannot be subelement of element "union"'
Also discussed here: openstreetmap/openstreetmap-website#1843
Can be fixed by adding additional semicolon at line 137 of osm.py file:
query = '({typ}{bbox}{queries};{recurse};);out {meta};'.format(
Your library was very helpfull, so i hope it will help others as well)
Hi there, I'm trying to figure out how to install geopandas_osm. Is there a conda or pip install option? I found a reference to 'conda install -c derickl geopandas-osm' but this doesn't work for me. Thanks & apologies if I'm missing something obvious!
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.