回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我搜索了我的问题,发现这个<a href="https://stackoverflow.com/questions/48097742/geopandas-point-in-polygon">question</a>与我的问题不同</p>
<p>我有两个地理数据框,一个包含房屋位置为<code>points</code>(~700个点),另一个包含<code>suburbs names</code>及其<code>polygon</code>(~2973个多边形)。我想将每个点链接到一个多边形,以便将每个房子指定给正确的郊区</p>
<p>我的地理数据框架示例</p>
<h2>多边形</h2>
<pre><code>import geopandas as gpd
from shapely.geometry import Point
from shapely.geometry.polygon import Polygon
#creating geo series
polys = gpd.GeoSeries({
'6672': Polygon([(142.92288, -37.97886,), (141.74552, -35.07202), (141.74748, -35.06367)]),
'6372': Polygon([(148.66850, -37.40622), (148.66883, -37.40609), (148.66920, -37.40605)]),
})
#creating geo dataframe
polysgdf = gpd.GeoDataFrame(geometry=gpd.GeoSeries(polys))
polysgdf
</code></pre>
<p>这将生成以下内容(我的原始地理数据框架还包含一个<code>suburb</code>列,其中包含郊区名称,但我无法将其添加到示例中,您只能在下面看到郊区ID)</p>
<pre><code> geometry
6672 POLYGON ((142.92288 -37.97886, 141.74552 -35.07202, 141.74748 -35.06367, 142.92288 -37.97886))
6372 POLYGON ((148.66850 -37.40622, 148.66883 -37.40609, 148.66920 -37.40605, 148.66850 -37.40622))
</code></pre>
<p>点地理数据框示例</p>
<h2>要点</h2>
<pre><code>points=[Point(145.103,-37.792), Point(145.09720, -37.86400),
Point(145.02190, -37.85450)]
pointsDF = gpd.GeoDataFrame(geometry=points,
index=['house1_ID', 'house2_ID', 'house3_ID'])
pointsDF
</code></pre>
<p>这会产生以下结果</p>
<pre><code> geometry
house1_ID POINT (145.10300 -37.79200)
house2_ID POINT (145.09720 -37.86400)
house3_ID POINT (145.02190 -37.85450)
</code></pre>
<p>我希望最终的输出是<code>pointsDF</code>地理数据框架,每个房子都被分配到相应的郊区。作为匹配点和多边形的结果</p>
<p>例如:</p>
<pre><code>suburbID subrubName house_ID
6672 south apple house1_ID
6372 water garden house2_ID
</code></pre>
<p>我不熟悉GeoPandas,我试图以尽可能清晰的方式解释我的问题。我很乐意澄清任何一点。
多谢各位</p>