Die Landschaft durcheinanderbringen, meinen Verstand zerbrechen. Mach dies, mach das nicht, kannst du die <\/SPAN>LINE? <\/SPAN>In Hey Neighbor? What's Your Value?<\/A> , Rasters, Pixels and Code Oh My!,<\/A> und Using SQL to Auto-Populate XY Values<\/A> habe ich einige SQL-Tricks eingeführt, um die Dateneingabe zu automatisieren. Wahrscheinlich hätte ich erwähnen sollen, dass diese Methoden hauptsächlich nur bei Punkten funktionieren....<\/P><\/P>Für unseren GIS-Datenstandard wollen wir auch dieselben administrativen Werte und Automatisierungen für Linientypen wie Straßen, Wege und andere lineare Merkmale erfassen. Das Problem ist, dass es viele Scheitelpunkte (Knoten, Koordinatenpaare) auf einer Linie gibt – welchen soll man für die SQL-Tricks verwenden?<\/P><\/P>Es gibt einige vorhandene SQL Geography-Methoden zur Manipulation von Well-Known-Text aus einer Geography-Linieninstanz, aber keine davon liefert mir einen Mittelpunktwert, und sie eignen sich sicherlich nicht gut dafür, Teil eines Triggers zu sein.<\/P><\/P>Um einfach einen Linienmittelpunktwert aus Geography zu erhalten, benötigen Sie die SQL Server Spatial Tools - Home<\/A> , die so einfach zu installieren sind wie das Registrieren einer DLL über SQL auf Ihrer Datenbankinstanz – funktioniert mit 2008 und 2012.<\/P><\/P>Ein Linienmittelpunkt kann abgefragt werden als:<\/P><\/P>SELECT dbo.LocateAlongGeog(SHAPE, SHAPE.STLength()\/2).Lat FROM [dbo].[SOMELINE<\/SPAN>]SELECT dbo.LocateAlongGeog(SHAPE, SHAPE.STLength()\/2).Long FROM [dbo].[SOMELINE<\/SPAN>]<\/PRE><\/P>Wenn man das in einem Trigger verpackt, um die Felder LAT, LON und Elevation zu füllen, erhalten wir:<\/P><\/P>CREATE TRIGGER [dbo].[SOMELINE_GEO]ON [dbo].[SOMELINE<\/SPAN>]AFTER INSERT, UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET LON = CASE WHEN p.SHAPE IS NULL THEN p.STStartPoint.LON ELSE p.SHAPE.Long END, LAT = CASE WHEN p.SHAPE IS NULL THEN p.STStartPoint.LAT ELSE p.SHAPE.Lat END,ELEVATION = (SELECTpdata.getValueByLoc(1,p.SHAPE.Long,p.SHAPE.Lat) FROM [dbo].[DEM10MP]) FROM dbo.SOMELINE AS p INNER JOIN inserted AS i ON i.GlobalID = p.GlobalID ENDGO<\/PRE><\/P>Polygone benötigen keine "Spezialfunktion" und können einfach nach Mittelpunktwerten abgefragt werden mit:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
<\/P>
Für unseren GIS-Datenstandard wollen wir auch dieselben administrativen Werte und Automatisierungen für Linientypen wie Straßen, Wege und andere lineare Merkmale erfassen. Das Problem ist, dass es viele Scheitelpunkte (Knoten, Koordinatenpaare) auf einer Linie gibt – welchen soll man für die SQL-Tricks verwenden?<\/P>
Es gibt einige vorhandene SQL Geography-Methoden zur Manipulation von Well-Known-Text aus einer Geography-Linieninstanz, aber keine davon liefert mir einen Mittelpunktwert, und sie eignen sich sicherlich nicht gut dafür, Teil eines Triggers zu sein.<\/P>
Um einfach einen Linienmittelpunktwert aus Geography zu erhalten, benötigen Sie die
Ein Linienmittelpunkt kann abgefragt werden als:<\/P>
SELECT dbo.LocateAlongGeog(SHAPE, SHAPE.STLength()\/2).Lat FROM [dbo].[SOMELINE<\/SPAN>]SELECT dbo.LocateAlongGeog(SHAPE, SHAPE.STLength()\/2).Long FROM [dbo].[SOMELINE<\/SPAN>]<\/PRE><\/P>Wenn man das in einem Trigger verpackt, um die Felder LAT, LON und Elevation zu füllen, erhalten wir:<\/P><\/P>CREATE TRIGGER [dbo].[SOMELINE_GEO]ON [dbo].[SOMELINE<\/SPAN>]AFTER INSERT, UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET LON = CASE WHEN p.SHAPE IS NULL THEN p.STStartPoint.LON ELSE p.SHAPE.Long END, LAT = CASE WHEN p.SHAPE IS NULL THEN p.STStartPoint.LAT ELSE p.SHAPE.Lat END,ELEVATION = (SELECTpdata.getValueByLoc(1,p.SHAPE.Long,p.SHAPE.Lat) FROM [dbo].[DEM10MP]) FROM dbo.SOMELINE AS p INNER JOIN inserted AS i ON i.GlobalID = p.GlobalID ENDGO<\/PRE><\/P>Polygone benötigen keine "Spezialfunktion" und können einfach nach Mittelpunktwerten abgefragt werden mit:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registrieren Sie ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.