2017-05-17 4 views
0

計算された列がある場所でマージするSQL空間テーブルでポリゴンを取得できません。計算された列があるところでSQL空間ポリゴンをマージする

元のクエリは素晴らしい作品:

SELECT RollNumber, Geometry, geometry::UnionAggregate(Geometry_SPA.MakeValid()) AS Geometry_SPA 
FROM  dbo.LegalParcel             
GROUP BY RollNumber, Geometry 

は、それは彼らの税のロール番号でマージされたポリゴンのセットを返します。

私たちはエリアを知りたいので、我々は計算列を追加しかし:これは今、グループ別に個別のレコードとして戻ってくる合併することになっているポリゴンをGeometry_SPAを追加する必要ので

SELECT RollNumber, Geometry_SPA.STArea() AS SqMetres, Geometry, geometry::UnionAggregate(Geometry_SPA.MakeValid()) AS Geometry_SPA  
FROM  dbo.LegalParcel    
GROUP BY RollNumber, Geometry, Geometry_SPA.STArea() 

を。私は必要なレコードを取得できますか

:「フロートは、ジオメトリと互換性のないオペランドの型の衝突」

は、私はエラーで終了し

columngeometry::UnionAggregate(Geometry_SPA.STArea()) As SqMetres 

しかし新しいSqMetresカラムに集計を追加しようとしましたマージするには?

なぜ2つのジオメトリ列があるのか​​不思議な人には、GISソフトウェアの要件です。

+0

実際のデータがないとやや難しいですが、 'columngeometry :: UnionAggregate(Geometry_SPA).STArea()As SqMetres'を試しましたか?ユニオン集合体はそれ自身のジオメトリインスタンスを返すべきであり、 'STArea()'メソッドが利用可能になります。 –

+0

ベンに感謝します。はい、そうです。どうやら、元の質問と全く別のトラックに乗っていたようです。 (答えを参照) – BigClyde

答えて

0

明らかに、問題はソーステーブルの疑わしいポリゴンにまでさかのぼります。

更新dbo.legalparcelを実行した後に設定Geometry_SPA = Geometry_SPA.MakeValid() Geometry_SPA.STIsValid()=

0私は今、元の計算カラムを使用して、正しい結果を得ています。

関連する問題