Bagunçando a paisagem, quebrando minha mente. Faça isso, não faça aquilo, você não consegue ler a <\/SPAN>LINE? <\/SPAN>Em Hey Neighbor? What's Your Value?<\/A> , Rasters, Pixels and Code Oh My!,<\/A> e Using SQL to Auto-Populate XY Values<\/A> eu introduzi algumas artimanhas de SQL para automatizar a entrada de dados. Provavelmente deveria ter mencionado que esses métodos funcionam principalmente em pontos....<\/P><\/P>Para nosso padrão de dados GIS, também queremos coletar os mesmos valores administrativos e automação para tipos de linha como estradas, trilhas e outras feições lineares. O problema é que há muitos vértices (nós, pares de coordenadas) em uma linha, qual usar para as artimanhas de SQL?<\/P><\/P>Existem alguns métodos SQL Geography existentes para manipular well-known-text de uma instância Geography line, mas nenhum deles me dá um valor de ponto médio, e certamente eles não se prestam bem a fazer parte de um trigger.<\/P><\/P>Para obter facilmente um valor de ponto médio da linha a partir do Geography, você precisará do SQL Server Spatial Tools - Home<\/A> instalado, o que é tão fácil quanto registrar uma DLL via SQL na sua instância de banco de dados - funciona no 2008 e 2012.<\/P><\/P>Um ponto médio da linha pode ser consultado 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>Envolvendo isso em um trigger para popular os campos LAT, LON e Elevation obtemos:<\/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>Polígonos não requerem a "função especial" e simplesmente podem ser consultados para valores do ponto médio com: <\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
<\/P>
Para nosso padrão de dados GIS, também queremos coletar os mesmos valores administrativos e automação para tipos de linha como estradas, trilhas e outras feições lineares. O problema é que há muitos vértices (nós, pares de coordenadas) em uma linha, qual usar para as artimanhas de SQL?<\/P>
Existem alguns métodos SQL Geography existentes para manipular well-known-text de uma instância Geography line, mas nenhum deles me dá um valor de ponto médio, e certamente eles não se prestam bem a fazer parte de um trigger.<\/P>
Para obter facilmente um valor de ponto médio da linha a partir do Geography, você precisará do
Um ponto médio da linha pode ser consultado 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>Envolvendo isso em um trigger para popular os campos LAT, LON e Elevation obtemos:<\/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>Polígonos não requerem a "função especial" e simplesmente podem ser consultados para valores do ponto médio com: <\/P><\/P>SELECT SHAPE.EnvelopeCenter().LatFROM [SOMEPOLYSELECT SHAPE.EnvelopeCenter().LongFROM [SOMEPOLY]<\/PRE><\/BODY><\/HTML>
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.