【发布时间】:2022-01-23 11:16:14
【问题描述】:
我使用ogr2ogr 工具从 GeoPackage 导入了一些数据。我假设导入操作没有任何故障,因为ST_IsValidReason() 为导入的多面返回Valid Geometry(geom 列)。
nzstat=# \d sa2_2020
Table "public.sa2_2020"
Column | Type | Collation | Nullable | Default
-----------------+-----------------------------+-----------+----------+---------------------------------------
gid | integer | | not null | nextval('sa2_2020_gid_seq'::regclass)
sa22018_v1_00 | character varying | | |
sa22018_v1_name | character varying | | |
land_area_sq_km | double precision | | |
area_sq_km | double precision | | |
shape_length | double precision | | |
geom | geometry(MultiPolygon,2193) | | |
Indexes:
"sa2_2020_pkey" PRIMARY KEY, btree (gid)
"sa2_2020_geom_geom_idx" gist (geom)
nzstat=# select ST_IsValidReason(geom) from sa2_2020 where gid=4;
st_isvalidreason
------------------
Valid Geometry
(1 row)
nzstat=# select ST_IsValidReason(ST_SetSRID(ST_MakePoint(174.77632, -41.28671), 2193));
st_isvalidreason
------------------
Valid Geometry
(1 row)
nzstat=# select sa22018_v1_name from sa2_2020 where ST_Within(ST_SetSRID(ST_MakePoint(174.82726, -41.16671), 2193), geom);
sa22018_v1_name
-----------------
(0 rows)
nzstat=#
我用于 ST_MakePoint() 的坐标来自另一个数据库,该数据库在 NZGD2000 坐标系 (SRID = 2193) 中给出了 x 和 y 值
full_address_ascii | gd2000_xcoord | gd2000_ycoord
-------------------------------------------------+---------------+---------------
1 Willis Street, Wellington Central, Wellington | 174.77632 | -41.28671
坐标应该在多个多边形之一中,但我的查询没有返回任何结果。我在这里有什么遗漏吗?
我使用 PostGIS 3.2 和 PostgeSQL 13.5。
谢谢
【问题讨论】:
-
Setsrid 只是改变元数据而不是坐标,你需要使用 st_transform 来代替
-
SRID 2193 中已经给出了 x 和 y 坐标,我还需要使用 ST_Transform() 吗?
标签: postgresql geolocation gis geospatial postgis