Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 仅在形状几何画板内获取值_Python_Pandas_Geopandas_Shapely - Fatal编程技术网

Python 仅在形状几何画板内获取值

Python 仅在形状几何画板内获取值,python,pandas,geopandas,shapely,Python,Pandas,Geopandas,Shapely,我有一个包含地理数据的大数据集。我只想提取与城市部分相关的数据。所以我需要创建一个形状并检查我的点是否在那里 我试着与: 要点 (一) (二) 边界 (一) (二) 然后根据: 索引器:数组的索引太多 如果要在边界内查找点,边界本身需要是多边形,而不是另一组点。如果边界点的坐标顺序正确,您可以尝试用以下内容替换最后两行: from shapely.geometry import Polygon turin_final = Polygon([[p.x, p.y] for p in border_

我有一个包含地理数据的大数据集。我只想提取与城市部分相关的数据。所以我需要创建一个形状并检查我的点是否在那里

我试着与:

要点 (一)

(二)

边界 (一)

(二)

然后根据: 索引器:数组的索引太多


如果要在边界内查找点,边界本身需要是多边形,而不是另一组点。如果边界点的坐标顺序正确,您可以尝试用以下内容替换最后两行:

from shapely.geometry import Polygon

turin_final = Polygon([[p.x, p.y] for p in border_point.geometry])
within_turin = turin_point[turin_point.geometry.within(turin_final)]

通常情况并非如此,但我从您的评论中了解到,它解决了您的问题。

您有两个要点。点中之点毫无意义,它永远不会给你有意义的结果。你想让你的边界层成为一个多边形吗?@martinfleis我想检查
turin
中的哪些点位于
border
并保存它们。但是你的边界是一组点,没有区域。如果你的点集应该是一个多边形,你必须用这些点生成它。@martinfleis,所以我问这个问题,如果你不知道点的正确顺序,你可能会得到不正确的多边形。但是您可以尝试
turin\u final=多边形([[p.x,p.y]表示边界中的p\u point.geometry])
而不是
turin\u final
线。
geometry = [Point(xy) for xy in zip(turin.longitude,turin.latitude)]
turin_point = gpd.GeoDataFrame(turin,crs=crs,geometry=geometry)
turin_point.head()


    latitude    longitude   geometry
0   44.9125     7.7432  POINT (7.74320 44.91250)
21  45.0764     7.5249  POINT (7.52490 45.07640)
22  45.0764     7.5249  POINT (7.52490 45.07640)
23  45.0755     7.5248  POINT (7.52480 45.07550)
24  45.0718     7.5236  POINT (7.52360 45.07180)
border.head()

    longitude   latitude    
0   7.577835    45.041828   
1   7.579849    45.039877   
2   7.580106    45.039628   
3   7.580852    45.038576   
4   7.580866    45.038556   
geometry2 = [Point(xy) for xy in zip(border.longitude,border.latitude)]
border_point = gpd.GeoDataFrame(border,crs=crs,geometry=geometry2)
border_point.head() = 

        longitude   latitude    geometry
    0   7.577835    45.041828   POINT (7.57783 45.04183)
    1   7.579849    45.039877   POINT (7.57985 45.03988)
    2   7.580106    45.039628   POINT (7.58011 45.03963)
    3   7.580852    45.038576   POINT (7.58085 45.03858)
    4   7.580866    45.038556   POINT (7.58087 45.03856)
turin_final= border_point.geometry.unary_union
within_turin = turin_point[turin_point.geometry.within(turin_final)]
from shapely.geometry import Polygon

turin_final = Polygon([[p.x, p.y] for p in border_point.geometry])
within_turin = turin_point[turin_point.geometry.within(turin_final)]