簡體   English   中英

將記錄為對象的多邊形轉換為勻稱的多邊形給出'str'對象沒有屬性'__array_interface__'

[英]convert polygon recorded as object to shapely polygon gives 'str' object has no attribute '__array_interface__'

最初,我有 2 個數據集。 一個是在 Excel 中定義的 45 個多邊形的數據集,另一個是點的幾何坐標。 我需要知道它所在的 45 個多邊形中的每個幾何點。

對於帶有多邊形的文件,我有一個將 POLYGON(......) 記錄為對象的 csv 文件。 我想稍后檢查多邊形是否包含形狀勻稱的點。 我認為它已經是多邊形類型,但是當我從 csv 導入它時,它只是作為字符串導入。 我試圖將此數據轉換為 Polygon()

df 中的每個 raw 看起來都像(故意縮短)

POLYGON ((37.667289733886719 55.700740814208984,37.670955657958984 55.70050048828125)

正如建議的那樣,我還打印了該數據集的前 5 個原始數據:

print(io.head(5))

                                                 WKT  IO_ID  Unnamed: 2
0  POLYGON ((37.667289733886719 55.70074081420898...     28         NaN
1  POLYGON ((37.671272277832031 55.62009048461914...     29         NaN
2  POLYGON ((37.713523864746094 55.77525711059570...     24         NaN
3  POLYGON ((37.700267791748047 55.72071075439453...     25         NaN
4  POLYGON ((37.783447265625 55.648544311523438,3...     26         NaN

如果我用多邊形檢查列的數據類型 - 它是一種對象格式

df.dtype

WKT            object
IO_ID           int64
Unnamed: 2    float64
dtype: object




for polygon in df.WKT:
  polygon = Polygon(polygon)

它給了我錯誤:'str'對象沒有屬性' array_interface '

我不明白為什么會發生這種情況以及可以做什么(我承認我對地理數據完全陌生)。 我的理解是,我需要使用多邊形格式的數據而不是對象格式,但不知何故我無法將其更改為它。

要使用 geopandas 的空間特征,您的形狀需要是幾何類型,而不是字符串。 您可以使用dtype屬性查看對象的類型 - 您應該看到如下內容:

In [6]: df.geometry.dtype
Out[6]: <geopandas.array.GeometryDtype at 0x17a0934c0>

相反,如果輸出顯示類似dtype('O')內容,那么您只有字符串,需要將它們轉換為 GeometryArray。

看起來您的形狀采用“眾所周知的文本”(又名 wkt)格式 您可以使用geopandas.GeoSeries.from_wkt將 wkt 列轉換為幾何列:

# replace string geometry representations with shapely geometries
df['geometry'] = gpd.GeoSeries.from_wkt(df['WKT'])

# initialize GeoDataFrame with the result
# ('geometry' is the default geometry column name)
gdf = gpd.GeoDataFrame(df)

此時,您的 GeoDataFrame gdf ​​應該具有 geopandas 的所有空間特征,並且可用於使用geopandas.sjoin連接到點的 GeometryArray。 請注意,需要首先使用 geopandas.points_from_xy 將點的常規 DataFrame 轉換為geopandas.points_from_xy - 例如,請參閱此問題以獲取示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM