Arruinando el paisaje, rompiendo mi mente. Haz esto, no hagas aquello, ¿no puedes leer la <\/SPAN>LINE? <\/SPAN>En Hey Neighbor? What's Your Value?<\/A> , Rasters, Pixels and Code Oh My!,<\/A> y Using SQL to Auto-Populate XY Values<\/A> había introducido algunos trucos de SQL para automatizar la entrada de datos. Probablemente debería haber mencionado que esos métodos funcionan principalmente con puntos....<\/P><\/P>Para nuestro estándar de datos GIS, también queremos recopilar los mismos valores administrativos y automatización para tipos de líneas como carreteras, senderos y otras características lineales. El problema es que hay muchos vértices (nodos, pares de coordenadas) en una línea, ¿cuál usar para los trucos de SQL?<\/P><\/P>Existen algunos métodos SQL Geography para manipular well-known-text de una instancia Geography line, pero ninguno me da un valor de punto medio, y ciertamente no se prestan bien a ser parte de un trigger.<\/P><\/P>Para obtener fácilmente un valor de punto medio de línea desde Geography, necesitarás tener instalado el SQL Server Spatial Tools - Home<\/A>, lo cual es tan fácil como registrar una DLL a través de SQL en tu instancia de base de datos - funciona en 2008 y 2012.<\/P><\/P>Se puede consultar un punto medio de línea como:<\/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>Envolviendo eso en un trigger para poblar los campos LAT, LON y Elevation obtenemos:<\/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>Los polígonos no requieren la "función especial" y simplemente pueden consultarse para valores del punto medio con:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
<\/P>
Para nuestro estándar de datos GIS, también queremos recopilar los mismos valores administrativos y automatización para tipos de líneas como carreteras, senderos y otras características lineales. El problema es que hay muchos vértices (nodos, pares de coordenadas) en una línea, ¿cuál usar para los trucos de SQL?<\/P>
Existen algunos métodos SQL Geography para manipular well-known-text de una instancia Geography line, pero ninguno me da un valor de punto medio, y ciertamente no se prestan bien a ser parte de un trigger.<\/P>
Para obtener fácilmente un valor de punto medio de línea desde Geography, necesitarás tener instalado el
Se puede consultar un punto medio de línea como:<\/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>Envolviendo eso en un trigger para poblar los campos LAT, LON y Elevation obtenemos:<\/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>Los polígonos no requieren la "función especial" y simplemente pueden consultarse para valores del punto medio con:<\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
Los miembros registrados pueden publicar, seguir actualizaciones y más. ¿Nuevo aquí? Regístrate gratis.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.