2017-05-17 4 views
0

Je rencontre des problèmes pour fusionner des polygones d'une table SQL Spatial dans le cas d'une colonne calculée.Fusion de polygones spatiaux SQL avec une colonne calculée

La requête originale fonctionne très bien:

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

Il renvoie un ensemble de polygones fusionnés par leur numéro de compte de taxes.

Cependant, nous voulons connaître les zones, donc nous avons ajouté une colonne calculée:

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() 

Depuis il fallait ajouter Geometry_SPA au Par groupe, maintenant les polygones qui sont censés fusionner revenir sous forme d'enregistrements discrets.

je tenté d'ajouter l'agrégation sur la nouvelle SqMetres colonne

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

Cependant qui se termine par l'erreur « choc de type Opérande: flotteur est incompatible avec la géométrie »

Comment puis-je obtenir les dossiers nécessaires fusionner?

Note pour quiconque se demandant pourquoi il y a deux colonnes géométriques: C'est une exigence de notre logiciel SIG.

+0

Un peu difficile à faire sans données réelles, mais avez-vous essayé 'columngeometry :: UnionAggregate (Geometry_SPA) .STArea() As SqMetres'? L'agrégat d'union doit renvoyer sa propre instance de géométrie qui aura la méthode 'STArea()' à sa disposition. –

+0

Merci Ben. Oui. Apparemment, j'étais complètement sur la mauvaise voie avec la question originale. (Voir la réponse) – BigClyde

Répondre

0

Apparemment, le problème remontait à certains polygones douteux dans la table source. Après avoir exécuté

mise à jour dbo.legalparcel Geometry_SPA = mis Geometry_SPA.MakeValid() où Geometry_SPA.STIsValid() = 0

Je suis maintenant obtenir des résultats corrects en utilisant la colonne calculée d'origine.