【问题标题】:Finding location using .geojson file using python使用 python 使用 .geojson 文件查找位置
【发布时间】:2018-06-24 03:09:58
【问题描述】:

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

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

【问题讨论】:

    标签: python geojson shapely


    【解决方案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 包含一个条目 features,其中包含功能列表。 每个特征又由一个字典组成,除其他外, 包含一个入口几何。几何是一个包含 条目类型和坐标。所以你可以遍历你的 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当然是 多边形的一个实例。 inside 和 contains 是每个的反义词 其他,所以你使用哪种方法完全取决于你。

    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)

    所以你必须把你的小数 lat, lon 值插入到形状点类中:

     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) 函数就可以工作了...

    【讨论】:

    • 所以,我能够弄清楚这部分。但是,我无法指出该点所在的区域。我试过Point.within(Polygon)Polygon.contains(Point)。他们不工作。顺便说一句,用户输入的是一组两个小数点(lat, lan)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多