De omgeving verpesten, mijn geest breken. Doe dit, doe dat niet, kun je de <\/SPAN>LINE? <\/SPAN>In Hey Neighbor? What's Your Value?<\/A> , Rasters, Pixels and Code Oh My!,<\/A> en Using SQL to Auto-Populate XY Values<\/A> had ik wat SQL-trucs geïntroduceerd om wat gegevensinvoer te automatiseren. Waarschijnlijk had ik moeten vermelden dat die methoden meestal alleen werken op punten....<\/P><\/P>Voor onze GIS-gegevensstandaard willen we ook dezelfde administratieve waarden en automatisering verzamelen voor lijntypen zoals wegen, paden en andere lineaire kenmerken. Het probleem is dat er veel vertices (knopen, coördinaatparen) op een lijn zijn, welke moet je gebruiken voor de SQL-trucs? <\/P><\/P>Er zijn enkele bestaande SQL Geography-methoden om well-known-text van een Geography-lijninstantie te manipuleren, maar geen van hen geeft mij een middenwaarde, en ze lenen zich zeker niet goed om deel uit te maken van een trigger.<\/P><\/P>Om gemakkelijk een lijnmiddenwaarde uit Geography te krijgen, heb je de SQL Server Spatial Tools - Home<\/A> nodig, die net zo eenvoudig te installeren is als het registreren van een DLL via SQL op je database-instantie - werkt op 2008 en 2012.<\/P><\/P>Een lijnmiddenpunt kan worden opgevraagd 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>Dat in een trigger verpakken om de LAT-, LON- en Elevation-velden te vullen levert het volgende op:<\/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>Polygonen hebben de "speciale functie" niet nodig en kunnen eenvoudig worden opgevraagd voor middenwaarden met:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
<\/P>
Voor onze GIS-gegevensstandaard willen we ook dezelfde administratieve waarden en automatisering verzamelen voor lijntypen zoals wegen, paden en andere lineaire kenmerken. Het probleem is dat er veel vertices (knopen, coördinaatparen) op een lijn zijn, welke moet je gebruiken voor de SQL-trucs? <\/P>
Er zijn enkele bestaande SQL Geography-methoden om well-known-text van een Geography-lijninstantie te manipuleren, maar geen van hen geeft mij een middenwaarde, en ze lenen zich zeker niet goed om deel uit te maken van een trigger.<\/P>
Om gemakkelijk een lijnmiddenwaarde uit Geography te krijgen, heb je de
Een lijnmiddenpunt kan worden opgevraagd 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>Dat in een trigger verpakken om de LAT-, LON- en Elevation-velden te vullen levert het volgende op:<\/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>Polygonen hebben de "speciale functie" niet nodig en kunnen eenvoudig worden opgevraagd voor middenwaarden met:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
Aangemelde leden kunnen berichten plaatsen, updates volgen en meer. Nieuw hier? Registreer een gratis account.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.