i';我正在使用postgreSQL将long/lat转换为point,并希望与该点保持一致
我正在使用postgreSQL将long/lat转换为point,并希望与该点保持一致i';我正在使用postgreSQL将long/lat转换为point,并希望与该点保持一致,postgresql,postgis,Postgresql,Postgis,我正在使用postgreSQL将long/lat转换为point,并希望与该点保持一致 select bs1.rental_shop_name, bs1.lon, bs1.lat, bs2.rental_shop_name, bs2.lon, bs2.lat, count(*), ST_MakeLine(ST_MakePoint(bs1.lon, bs1.lat), ST_MakePoint(bs2.lon, bs2.lat)) from
select bs1.rental_shop_name,
bs1.lon,
bs1.lat,
bs2.rental_shop_name,
bs2.lon,
bs2.lat,
count(*),
ST_MakeLine(ST_MakePoint(bs1.lon, bs1.lat), ST_MakePoint(bs2.lon, bs2.lat))
from bikeuser as bu
join bikestation as bs1 on bs1.rental_shop_code = bu.rental_shop_code
join bikestation as bs2 on bs2.rental_shop_code = bu.return_shop_code
group by bs1.rental_shop_name,
bs1.lon,
bs1.lat,
bs2.rental_shop_name,
bs2.lon,
bs2.lat,
ST_MakeLine(ST_MakePoint(bs1.lon, bs1.lat), ST_MakePoint(bs2.lon, bs2.lat))
order by count desc limit 40
但结果是失败的,消息是错误的
SQL状态:42883 st_生成点不存在,并且必须使用显式转换器
我也用这样的简单形式进行了测试
SELECT ST_MakePoint(-71.1043443253471, 42.3150676015829);
但同样的结果 对于lat-long,仅使用ST_MakePoint是不够的。您还必须设置几何体的SRID。如果数据来自WGS84(通常是lat long的情况),则需要在几何体上应用ST_SetGrid
ST_MakeLine(ST_SetSRID(ST_MakePoint(bs1.lon, bs1.lat),4326), ST_SetSRID(ST_MakePoint(bs2.lon, bs2.lat),4326))
您应该考虑您自己的数据SRID。ST_MakePoint不是标准的PostgreSQL函数,它是PostGIS的一部分,您安装了吗?