我正在尝试将这些数据转换为几何图形,但由于某种原因 postgresql 返回不可读的值。我需要 latlng...我根本无法使用该值来绘制标记。
我在这里缺少什么?
请帮忙。
postgresql v.11
insert into area(latlng) values('0101000000A0ABA80D249D024100EC624219AA0B41'::geometry);
select st_asgeojson(latlng) from area;
退货
"{""type"":""Point"",""coordinates"":[152484.50666937,226627.157415241]}"
------------------------------------------已添加
添加了更多查询。它们总是返回相同的值。 我开始认为我从数据团队提供的值可能是错误的...('0101000000A0ABA80D249D024100EC624219AA0B41')
select ST_AsText('0101000000A0ABA80D249D024100EC624219AA0B41');
"POINT(152484.50666936953 226627.157415241)"
select st_setsrid(st_asgeojson('0101000000A0ABA80D249D024100EC624219AA0B41')::geometry, 4326);
select st_transform(st_setsrid(st_asgeojson('0101000000A0ABA80D249D024100EC624219AA0B41'::geometry), 4326), 3857);
您的输入值是
geography
而不是 geometry
。见下文
select st_astext('0101000000A0ABA80D249D024100EC624219AA0B41'::geography);
-- POINT(-155.4933306304738 -7.157415241003036)
select postgis_version();
-- 3.3 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
简而言之,
geography
更准确,但查询需要占用大量资源。
geometry
是 geography
99% 足够好的版本
信息: https://postgis.net/documentation/faq/geometry-or-geography/