使用python使用.geojson文件查找位置

时间:2018-01-15 13:18:22

标签: python geojson shapely shapely.geometry

我有一个map.geojson文件,其中包含各个城市的区域边界。

如何计算由(纬度,经度)给出的点的区域?

1 个答案:

答案 0 :(得分:1)

你可以解析geojson并提取点/坐标

 import json 
 data = json.loads(datastring)
 data['features'][0]['geometry'] #Your first point

How can I parse GeoJSON with Python

  

使用json库加载GeoJSON文件时,会得到一个dict   包含条目功能,其中包含功能列表。   每个特征又由一个字典组成,其中包括:   包含一个条目几何。几何是包含的几何   条目类型和坐标。所以你可以遍历你的GeoJSON文件   像这样:

import json

with open('test.json') as f:
    data = json.load(f)

for feature in data['features']:
    print feature['geometry']['type']
    print feature['geometry']['coordinates']

https://gis.stackexchange.com/questions/73768/how-to-convert-geojson-to-python-objects

现在您已经使用坐标/点创建了一个多边形,以获得城市边界的几何表示:How to create a Polygon given its Point vertices?

  

点在多边形

     

现在您有一个多边形,确定一个点是否在其中   很容易有两种方法可以做到。

`point.within(polygon)`
`polygon.contains(point)`
     

point应该是Point类的实例,而poly当然是   Polygon的一个实例。 in和contains是每个的相反   另外,所以你使用哪种方法完全取决于你。

https://streamhacker.com/2010/03/23/python-point-in-polygon-shapely/

in shapely是一个处理点的特定类,只有在此类中表示的点才能在point.within(polygon)中起作用 和polygon.contains(point)函数。

  

点类型由Point类实现;曲线由   LineString和LinearRing类;并由Polygon类表面。   形状上不实现平滑(即具有连续切线)曲线。   所有曲线必须用线性样条近似。所有圆形补丁   必须用由线性样条限定的区域近似。

https://toblerity.org/shapely/manual.html

因此您必须使用小数latlon值并将其插入到匀称的点类中:

 from shapely.geometry import Point
 point = Point(0.0, 0.0)
 q = Point((0.0, 0.0))

https://toblerity.org/shapely/manual.html#points

使用此point.within(polygon)polygon.contains(point)函数将有效...