这应该很容易(我可以在Excel中快速完成)。我有下面的数据框架,我想加入,连接,聚合XY对到一个字符串(然后在开始和结束添加文本)。
Easting Northing
0 416213.873 6507344.904
1 424283.1 6509982.331
2 428632.58 6496675.102
3 418176.907 6493257.665
4 415338.984 6501940.281
5 416213.873 6507344.904
我用这条线连接每个XY对。
df['WKT'] = df[['Easting', 'Northing']].agg(' '.join, axis=1)
Easting Northing WKT
0 416213.873 6507344.904 416213.873 6507344.904
1 424283.1 6509982.331 424283.1 6509982.331
2 428632.58 6496675.102 428632.58 6496675.102
3 418176.907 6493257.665 418176.907 6493257.665
4 415338.984 6501940.281 415338.984 6501940.281
5 416213.873 6507344.904 416213.873 6507344.904
我尝试了.join和.agg,但没有得到我想要的。我也看了Pivot,但也不能让它工作。
我想做的是到达这里,所有的东/北对都连接起来形成一个字符串,它们之间有','-然后在前面添加“POLYGON((“和“))”。
多边形((X 0 Y 0,X1 Y1,X2 Y2,X3 Y3,X4 Y 4,X5 Y 5))
在这种情况下有5个点,第6个是第1个的重复以关闭框。它并不总是一个固定的点数,所以我研究了可迭代的循环,但是由于基本的连接不起作用,循环也产生了垃圾。
问题的次要部分涉及LineString。输入文件将像这样,但我只导入SOLE,SOLE,EOLE,EOLN:
Line #,Name,SOLE,SOLN,EOLE,EOLN,SOLKP,EOLKP
1,EQ23303-01001-04,421386.910,6499570.855,420145.852,6503366.914,0.000,3.994
2,EQ23303-01005-08,421410.672,6499578.623,420169.615,6503374.683,0.000,3.994
3,EQ23303-01009-12,421434.435,6499586.392,420193.377,6503382.451,0.000,3.994
4,EQ23303-01013-16,421458.197,6499594.161,420217.139,6503390.220,0.000,3.994
对于每一行,我试图得到的输出是:
LINESTRING(SOLE SOLN,EOLE EOLN)
简单地说,它只是X和Y之间有一个空格,XY对之间有一个空格的行的连接。我有另一种方法,但看到形状的功能,我想知道是否有一个更整洁的方法。
1条答案
按热度按时间nwwlzxa71#
IIUC,您可以从shapely使用
Polygon
:输出: