Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
i';我正在使用postgreSQL将long/lat转换为point,并希望与该点保持一致_Postgresql_Postgis - Fatal编程技术网

i';我正在使用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

我正在使用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 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的一部分,您安装了吗?