1

Spatialite は初めてです。次のクエリがあります。

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

私は実際に 100 メートルのバッファーを作成し、どのリンクが含まれているかを知りたいと思っています。

挿入された「100」が実際には度数であることがわかり、この範囲内にある出力が得られます。

度の値もクエリに入れることができますが、度からメートル/キロメートルへの変換は世界中で同じではありません。私は多くのサイトを通過し、1 度 = 約 110 KM を知ることができました。しかし、GIS の専門家やいくつかの参考サイトからも、地球上の各極で異なることがわかります。

たとえば、Alta/Norway での平面近似のメトリック x と y の差は、x 方向で 34 km、y 方向で 111 km です。地理座標を使用すると、バッファーは次のようになります

地理データを幾何学的 (X、Y 座標形式) データに変換し、Spatiallite が理解できる変換を行うソフトウェアを構築します。

SRID についても読み込もうとしていますが、それをクエリに挿入する方法を理解できません。

4

2 に答える 2

0

SQL Server 2008 以降を使用している場合は、空間型を使用できるはずです

  1. linka に geography 列が含まれ、その名前が geo で、Points が含まれていると仮定します。
  2. 空間インデックスを作成することを忘れないでください!
  3. これを試して

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

    SELECT * from linka WHERE linka.geo.STDistance(@buffer) < @distance

于 2014-02-19T14:59:10.723 に答える