首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用.geojson文件查找位置

使用.geojson文件查找位置
EN

Stack Overflow用户
提问于 2018-01-15 21:18:22
回答 1查看 3.4K关注 0票数 1

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-15 22:18:44

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

代码语言:javascript
运行
复制
import json 
 data = json.loads(datastring)
 data['features'][0]['geometry'] #Your first point

(如何使用Python解析GeoJSON)

当您使用json库加载GeoJSON文件时,您会得到一个包含条目features的字典,其中包含特性列表。每个特征依次由一个字典组成,其中包含一个条目几何。几何图形是一个包含条目类型和坐标的字典。因此,您可以像这样遍历GeoJSON文件:

代码语言:javascript
运行
复制
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)

现在您有了坐标/点,创建一个多边形使用它来获得城市边界的几何表示:给定多边形的点vertices?](https://stackoverflow.com/questions/30457089/how-to-create-a-polygon-given-its-point-vertices)后,如何创建多边形[How to create a

多边形中的点

现在你有了一个多边形,确定一个点是否在它里面是非常容易的。有两种方法可以做到这一点。

点内(多边形)polygon.contains(点)

point应为Point类的实例,而Polygon当然是Polygon的一个实例。内和内是彼此的对立面,所以使用哪种方法完全由你决定。

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

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

点类型由point类实现;通过LineString和LinearRing类绘制曲线;通过多边形类绘制曲面。Shapely实现无平滑(即具有连续切线)曲线。所有曲线都必须用线性样条近似。所有圆角面片必须由线性样条线限定的区域近似。

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

所以你得把你的小数latlon值并将它们插入shapely点类中:

代码语言:javascript
运行
复制
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)函数将会工作...

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48263802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档