Daha çox

Python'da bir .shp sənədinə OSM məlumatlarını yazmağın əlverişli yolu nədir?


Müəyyən edilmiş bir məhdudlaşdırma qutusu içərisində olan və xüsusi açar / dəyər kombinasiyalarına uyğun OSM məlumatlarını əldə etməyini arzu edirəm. Daha sonra bunu, ehtimal ki, QGIS api istifadə edərək daha da işləmək üçün bir .shp sənədinə yazmaq istəyirəm.

Həddindən artıq istifadə edərək məhdudlaşdıran qutuda OSM məlumatlarını uğurla əldə etdim və bir overpy.Result obyektində saxladım. Bir .shp sənədinə yazmağın bir yolunu tapa bilmirəm?

Kimsə məni uyğun bir fraqmentə, tercihen fiona istifadə edən bir parçaya yönəldə bilərmi?


Birinci overpy nümunəsini istifadə etsəm

import overpy api = overpy.Overpass () # bütün yolları və qovşaqları əldə edin nəticə = api.query ("" "yol (50.746,7.154,50.748,7.157) [" magistral "]; (._;>;); bədəndən kənar ; "" ")

Yaranan skript yolların adlarını və qovşaqlarını verir. bir LineString qovşaqları olan:

way in result.ways üçün: print ("Adı:% s"% way.tags.get ("name", "n / a")) print ("Highway:% s"% way.tags.get ("road "," n / a ")) print (" Nodes: ") in way.nodes düyün üçün: print (" Lat:% f, Lon:% f "% (node.lat, node.lon)) Adı: Rhedenstraße Magistral: yaşayış qovşaqları: Lat: 50.746874, Lon: 7.156307 Lat: 50.746598, Lon: 7.156237 Lat: 50.746477, Lon: 7.156199…

Buna görə Fiona ilə:

fiona.crs-dən fiona idxal import from_epsg şema = {'həndəsə': 'LineString', 'xassələr': {'Ad': 'str: 80'}} shapeout = "test.shp" fiona.open ilə (shapeout, ' w ', crs = from_epsg (4326), driver =' ESRI Shapefile ', schema = schema) output: for way in result.ways: # shapefile geometry use (lon, lat) line = {' type ':' LineString ',' coordinates ': [(node.lon, node.lat) in way.nodes düyün üçün]} prop = {' Ad ': way.tags.get ("name", "n / a")} output. yazın ({'həndəsə': sətir, 'xassələr': dayaq})

Yaranan shapefile nəzarət

c = fiona.open ("test.shp") # ilk c.next () {'həndəsə': {'type': 'LineString', 'koordinatlar': [(7.1563067, 50.7468739), (7.1562371, 50.7465981), (7.1561995, 50.746477), (7.1561245, 50.7463604), (7.1560233, 50.746263), (7.1559261, 50.7461938), (7.155843, 50.7461387)]}, 'type': 'Feature', 'id': '0', ' ': OrderedDict ([(u'name', u'Rhedenstra  xdfe ')])}

QGIS ilə nəzarət (qırmızıda):

Əlavə edə bilərsiniz