0

谢谢你看这个 - 我确信这是一个简单的问题,但这对我来说都是全新的,经过大量的互联网搜索,我的观点仍然在海中!

我有一组已转换为纬度和经度的英国邮政编码数据。我也有一个英国县的形状文件。

我用来将纬度/经度转换为几何点列的代码如下:

ALTER TABLE colic ADD COLUMN longlat geometry(POINT,27700);
update colic set longlat = st_setsrid(st_point( longitude, latitude), 27700);

这会产生一个具有如下值的列(我只包括了几个!):

"0101000020346C000048BF7D1D3867E83FC05B2041F1334A40" "0101000020346C0000F085C954C1A8F7BFA1F831E6AE954A40" "0101000020346C000020D26F5F07CEF4BFE3361AC05B504A40" "0101000020346C00007D3F355EBA49F73FB6847CD0B3614A40"

我的形状文件中的 .prj 是:

PROJCS["British_National_Grid", GEOGCS["GCS_OSGB_1936", DATUM["D_OSGB_1936", SPHEROID["Airy_1830",6377563.396,299.3249646]], PRIMEM["Greenwich",0.0],UNIT["Degree",0.01745329251999 ["Transverse_Mercator"], PARAMETER["False_Easting",400000.0], PARAMETER["False_Northing",-100000.0], PARAMETER["Central_Meridian",-2.0], PARAMETER["Scale_Factor",0.9996012717], PARAMETER["Latitude_Of_Origin", 49.0],单位[“米”,1.0]]

当我使用 PostGIS shapefile 上传器上传它时,我将它的 SRID 设置为 27700。

在 PG Admin 中,当我问:

select st_srid(geom) from counties limit 1;
select st_srid(longlat) from colic limit 1;

我两个都得到 27700。

但是......当我尝试任何空间查询时,我没有得到任何响应,并且当我将图层加载到量子中时,点数据不在北大西洋康沃尔的尖端,并且仅表示为县规模上的一个点地图。如果我放大它们,它们就在“那里”,但不是在应该在的东安格利亚!

这是我在 SQL 和映射方面的第一次尝试——我确信我错过了一些非常简单的东西。

4

1 回答 1

1

You are mixing up spatial references (SRS). The SRS in the .prj file (aka SRID=27700) is projected eastings and northings, which have units of metres. This is not latitude and longitude! Furthermore, it is a deception to call a column longlat when it isn't for longitude/latitude coordinates.

If you try to insert latitude/longitude in a column with SRID=27700, the points will not behave as expected, e.g., they will be in the far bottom left corner of a map.

If you have lat/long data from WGS84 (SRID=4326), you can transform this to eastings and northings:

UPDATE colic SET
  geom = ST_Transform(ST_SetSRID(ST_Point(longitude, latitude), 4326), 27700);
于 2013-09-12T00:55:02.530 回答