首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GEOS_ERROR: ParseException:未知的WKB类型337

GEOS_ERROR: ParseException:未知的WKB类型337
EN

Stack Overflow用户
提问于 2020-06-07 21:01:38
回答 1查看 717关注 0票数 1

我正在用geodjango和postgis编写一个基于地理的应用程序。我编写了模型,并从管理界面手工填充了前几个点。一切都很好,我甚至可以根据最近的点进行搜索。因此,模型和数据库都工作得很好。现在,我正在尝试从脚本批量填充数据库。根据我在这里找到的答案,我首先填充经度和纬度列,然后执行

代码语言:javascript
复制
engine.execute("UPDATE listings_listing SET location = ST_SetSRID(ST_MakePoint(longitude,latitude), 4326)")

来自python脚本。查询执行时没有异常,数据库中似乎填满了适当的值。这里有几个例子

代码语言:javascript
复制
 longitude, latitude, location
-55.7385809,-34.7413717,"0101000020E6100000A279A5D189DE4BC008D79244E55E41C0"
-56.1645314,-34.9011127,"0101000020E610000022156B5D0F154CC0504134A9577341C0"
-56.4670779,-30.4264621,"0101000020E610000099976835C93B4CC0C57BC49E2C6D3EC0"
-55.760207,-34.774156,"0101000020E61000005B9885764EE14BC04700378B176341C0"
-56.2553815,-34.7901883,"0101000020E610000070404B57B0204CC04617E5E3246541C0"
-55.760336,-34.773944,"0101000020E610000059FCA6B052E14BC0BC77D498106341C0"
-57.0544726,-30.7552116,"0101000020E610000098C349F5F8864CC0518F238C55C13EC0"
-56.4739006,-30.4097107,"0101000020E610000003475DC6A83C4CC03F52E9CCE2683EC0"

现在,当我尝试通过最近的点进行第一次搜索时,我得到了

代码语言:javascript
复制
GEOS_ERROR: ParseException: Unknown WKB type 337

从django的日志中

代码语言:javascript
复制
Error encountered checking Geometry returned from GEOS C function "GEOSWKBReader_read_r".

我在谷歌上搜索了这个错误,但什么都没有。我检查了经度和纬度中可能的空值,但它们都很好。我怀疑我漏掉了一步。有人能给我指个方向吗?

EN

回答 1

Stack Overflow用户

发布于 2020-06-07 22:16:14

我找到了解决方案。问题出在大熊猫的堆积。如果您使用带有参数if_exists='replace'的pandas的方法.to_sql(),那么pandas将删除现有的表并完全替换它,从而破坏每个模式。因此,在填充几何类型列之前,必须以这种方式重新构建几何列

代码语言:javascript
复制
ALTER TABLE listings_listing ADD COLUMN location geometry(Point, 4326); 

然后

代码语言:javascript
复制
UPDATE listings_listing SET location = ST_SetSRID(ST_MakePoint(longitude, latitude), 4326)

现在一切都很好了!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62245709

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档