我正在使用PostgreSQL和PostGIS。我的所有数据都已连接到十进制纬度/长度(即-87.34554 33.12321),但要使用PostGIS,我需要将其转换为某种类型的SRID。 我的大多数查询都在寻找特定半径范围内的数据。
我应该使用什么SRID?我已经创建了一个带有SRID 4269的几何列。 在这个例子中: link text作者正在将SRID 4269转换为SRID 32661.我对如何以及何时使用这些SRID感到非常困惑。任何关于这个主题的精简版都会真正受到赞赏
答案 0 :(得分:7)
只要您从不打算将数据重新投影/转换到另一个坐标系,从技术上讲,您使用的是什么样的srid并不重要。但是假设您不想丢弃那些重要的元数据,并且您确实希望对其进行转换,那么您需要确保已分配的srid与数据匹配,因此postgis知道在时机成熟时该做什么。
那你为什么要重新投影epsg:4269?答案是因为某些类型的查询(例如距离)在这个“未投影”的世界中毫无意义。你的单位是十进制度,x十进制度的直接测量是一个不同的实际距离,取决于你在这个星球的位置。
在上面的例子中,有人正在使用epsg:32661,因为他们相信这会让他们更准确地了解他们正在使用的工作。如果您的数据位于全球的特定区域,您可以选择对该区域准确的投影。如果它横跨整个地球,你必须选择一个对你的需求“正常”的投影。
幸运的是,PostGIS有一些方法可以让这一切变得更容易。对于近似距离,您可以使用st_distance_sphere函数,正如您可能猜到的那样,假设地球是一个球体。或者更准确的st_distance_spheroid。使用这些,您不需要重新投影,除了边缘情况,您可能会对您的距离查询很好。较新版本的PostGIS还允许您使用geography columns
tl; dr - 使用st_distance_spheroid进行距离查询,将数据存储在地理列中,或将其转换为本地投影(存储时,或根据需要动态运行)。
答案 1 :(得分:1)
看看这个问题:How do you know what SRID to use for a shp file?
SRID只是将WKT存储在数据库中的一种方式(您可能已经注意到,除非存储纬度/长点,否则首选存储是一个带有数字和大写字母的长字符串)。 / p>
SRID或EPSG对于国家/州/ ...可能有所不同。尽管有一些非常常见的,特别是您提到的2。如果您需要特定信息哪个区域使用什么SRID,则有database for handling that。
在数据库中,您有一个表spatial_ref_sys
,其中包含有关SRID PostGIS知道的信息。