GIS缓冲值度为米与空间

时间:2014-02-19 14:05:33

标签: sql buffer gis geospatial spatialite

我是Spatialite的新手。我有以下查询:

select A.* 
from linka as A, pointa as B 
where Contains(Buffer(B.Geometry, 100), A.Geometry)

我实际上想要创建100米的缓冲区并了解它所包含的链接。

我能够找到插入的'100'实际上是度数值,并且它给出了这个范围内的输出。

我可以将度数值也放在我的查询中,但是从度数到米/公里的转换在全世界都不一样。 我经历了很多站点,能够知道1度= 110公里左右。 但是从地理信息系统专家和一些参考站点也可以了解地球上的每个极点都不同。

例如,Alta / Norway在平面近似的度量x和y之间的差异在x方向上为34 km,在y方向上等于111 km。使用地理坐标时,缓冲区看起来与此类似: http://extremelysatisfactorytotalitarianism.com/blog/wp-content/uploads/2010/08/tissot_indicatrix_equirectangular_proj.png

我构建的软件将地理数据转换为几何(X,Y坐标格式)数据,并在Spatiallite可以理解的地方进行转换。

我也尝试阅读有关SRID的内容,但无法理解如何将其插入到我的查询中。

2 个答案:

答案 0 :(得分:0)

如果您使用的是SQL Server 2008或更高版本,则应该能够使用空间类型

  1. 假设linka包含地理列,其名称为geo,并且包含Points
  2. 别忘了创建空间索引!
  3. 试试这个

    DECLARE @buffer geography = geography :: Point(1.234,5.678,4326); DECLARE @distance float = 100.0;

    来自linka的SELECT * 在哪里linka.geo.STDistance(@buffer)< @距离

答案 1 :(得分:0)

将几何临时转换为公制投影(例如UTM) 如果我假设您当前的预测是WGS84,请尝试以下标准

 transform (buffer (transform (B.geometry, #projection), #dist), 4326))

-in #projection:您的新投影,例如:WEL 84 / UTM区域31N的32631(选择适合您的区域的投影)

-in #dist:以米为单位的距离

(WGS84为4326)