谢谢你看这个-我肯定这是一个简单的问题,但这对我来说都是非常新的,经过大量的互联网搜索,我的观点仍然在海里!
我有一套英国邮政编码数据,我已经转换成经纬度。我也有一个英国县形状文件。
用于将纬度/经度转换为几何点列的代码如下:
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是:
British_National_Grid[“GCS_OSGB_1936”,GEOGCS["GCS_OSGB_1936",基准[“D_OSGB_1936”,球体“Airy_1830”,6377563.396,299.3249646],PRIMEM“格林威治”,0.0,单位“度”,0.0174532925199433],投影“Transverse_Mercator”,参数“False_Easting”,400000.0,参数“False_Northing”,-100000.0,参数“Central_Meridian”,-2.0,参数“Scale_Factor”,0.9996012717,参数“Latitude_Of_Origin”,49.0,单位“米”,1.0]
当我使用PostGIS shapefile上传器上传它时,我将它的SRID设置为27700。
在PG管理中,当我问:
select st_srid(geom) from counties limit 1;
select st_srid(longlat) from colic limit 1;
我两个人都有27700。
But...when --我尝试了任何空间查询--我没有得到任何响应,当我将这些层加载到量子层中时,点数据就在北大西洋康沃尔的顶端,并且只表示为县( map.If )规模上的一个点--我放大了它们,它们是“在那里”,但不是在东安格利亚( east )它们应该在的地方!
这是我第一次尝试SQL和映射--我确信我错过了一些非常简单的东西。
发布于 2013-09-11 16:55:02
您混淆了空间引用(SRS)。.prj文件中的SRS (又名SRID=27700)是投影的东向和东北方向,其单位为米。这不是经纬度!此外,当列longlat
不是用于经纬度坐标时,调用它是一种欺骗。
如果尝试使用SRID=27700在列中插入纬度/经度,则这些点的行为将不像预期的那样,例如,它们将位于地图的左下角。
如果您有来自WGS84 (SRID=4326)的lat/long数据,则可以将其转换为东方和东北:
UPDATE colic SET
geom = ST_Transform(ST_SetSRID(ST_Point(longitude, latitude), 4326), 27700);
https://stackoverflow.com/questions/18653658
复制