【发布时间】:2017-11-08 19:40:58
【问题描述】:
我正在尝试将 ewkb 坐标转换为 Python 上相关的经度和纬度。 ewkb 字符串列在单列 csv 文件中(名为“/home/nick/Documents/Sepi/WKB_coordinates_sing.csv”)。
为了简单起见,我删除了其他列,但最终我想使用原始数据集并使用 ewkb 读取正确的列。
此外,我想一次阅读和翻译一行,因为我有数百万行和坐标的文件要处理。
我写了以下代码:
from shapely import wkb
with open ("/home/nick/Documents/Sepi/WKB_coordinates_sing.csv") as f:
for line in f:
hexloc=f.readline()
print(hexloc)
point=wkb.loads(hexloc,hex=True)
print(point.x,point.y)
但是,当我运行它时,我得到以下信息:
~$ python /home/nick/Documents/Sepi/ewkb.py
0101000020E610000072604C0D47AA37402C306475ABA85140
ParseException: Premature end of HEX string
Traceback (most recent call last):
File "/home/nick/Documents/Sepi/ewkb.py", line 7, in <module>
point=wkb.loads(hexloc,hex=True)
File "/home/nick/anaconda3/lib/python3.6/site-packages/shapely/wkb.py", line 14, in loads
return reader.read_hex(data)
File "/home/nick/anaconda3/lib/python3.6/site-packages/shapely/geos.py", line 409, in read_hex
"Could not create geometry because of errors "
shapely.errors.WKBReadingError: Could not create geometry because of errors while reading input.
但是,如果我使用 csv 文件中的第一个十六进制字符串作为 wkb.loads 的参数运行以下代码,我可以获得经度和纬度:
代码:
from shapely import wkb
hexloc="0101000020E610000072604C0D47AA37402C306475ABA85140"
print(hexloc)
point=wkb.loads(hexloc,hex=True)
print(point.x,point.y)
结果:
~$ python /home/nick/Documents/Sepi/ewkb.py
0101000020E610000072604C0D47AA37402C306475ABA85140
23.665146666666665 70.63546500000001
提前谢谢你!
【问题讨论】:
标签: python-3.x csv shapely