V Automatizace opakujících se atributových hodnot pomocí SQL<\/A> jsme přidali určitou automatizaci pro opakovaný vstup dat pomocí tříd prvků, které používají typ úložiště Microsoft Geography.<\/P><\/P>A co ostatní opakující se datové body? Zpět k naší "Data Standard", většina dat, která sbíráme, musí být také opatřena atributy s diskrétními nebo spojitými hodnotami získanými z rastru, jako je nadmořská výška. Jistě, mohl bych napsat nějaký Python nebo C# kód pro tuto úlohu, ale tu třídu jsem vynechal...<\/P><\/P>Toto předpokládá, že máte rastrový Digitální model terénu v SDE, který byl NEJDŘÍVE nakonfigurován pomocí ST_RASTER (ArcGIS Help 10.1<\/A>) a poté zkopírován do tabulky ST_PIXEL se SRID 4269.<\/P><\/P>V tomto příkladu mám DEM s rozlišením 10 m pojmenovaný DEM10MP. V mé konvenci pojmenování "P" označuje, že tabulka je typu ST_PIXEL.<\/P><\/P>Rozšiřuji trigger představený v Automatizace opakujících se atributových hodnot pomocí SQL<\/A> jednoduše přidáním dotazu Get Value By Location využívajícího hodnotu LAT\LON ze vloženého nebo aktualizovaného sloupce Geography. Celý trigger vypadá takto. Řádky 25\26 obsahují dotaz na nadmořskou výšku.<\/P><\/P>ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** spustit při vkládání a aktualizacích ******\\****** deaktivovat trigger při povolené SQL replikaci nebo zrcadlení ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypoteticky bychom mohli zadat lat\lon jako text a vytvořit objekt geography ******\ SHAPE = CASE WHEN i.SHAPE IS NOT NULL THEN p.SHAPE ELSE Geography::STPointFromText('POINT(' + CAST(p.LON AS VARCHAR(20)) + ' ' + CAST(p.LAT AS VARCHAR(20)) + ')', 4269) END, \****** obvyklý případ: bod je vytvořen ARC a převádí LAT\LON jako text ******\\****** z objektu geography ******\ LON = CASE WHEN p.SHAPE IS NULL THEN p.LON ELSE p.SHAPE.Long END, LAT = CASE WHEN p.SHAPE IS NULL THEN p.LAT ELSE p.SHAPE.Lat END, QuadName = COALESCE(b.name, p.QuadName), Watershed = COALESCE(c.HUC_12_Name, p.Watershed), County = COALESCE(d.Name, p.County), State= COALESCE(e.Name, p.State), PARKDISTRICT = COALESCE(f.District, p.PARKDISTRICT), ELEVATION = (SELECT<\/STRONG><\/SPAN>pdata.getValueByLoc(1,p.SHAPE.Long,p.SHAPE.Lat) FROM [dbo].[DEM10MP])<\/STRONG><\/SPAN> FROM TEST AS p \****** povolit aktualizaci lat\lon při aktualizaci ******\ INNER JOIN inserted AS i ON i.globalid = p.globalid LEFT OUTER JOIN USGS_24K_TOPOMAP_BOUNDARIES AS b ON b.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN WATERSHEDS AS c ON c.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN GRSM_COUNTIES AS d ON d.Shape.STIntersects(i.Shape) = 1 & nbsp ; LEFT OUTER JOIN GRSM_States AS e ON e.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f ON f.Shape.STIntersects(i.Shape) = 1 ; ENDGO<\/PRE><\/P>Nyní pro každý nový bod, který přidám do této třídy prvků nebo upravím, je automaticky vyplněno nebo aktualizováno vše kromě jednoho pole.<\/P><\/P>Vždy.<\/P><\/P>Bez vstupu uživatele.<\/P><\/P><\/P><\/P>Toto je osobní blog a nedoporučuje, nepodporuje ani nepodporuje výše popsané metody. Úprava dat pomocí SQL mimo softwarový balík ESRI samozřejmě není podporována a neměla by být aplikována na produkční databázi bez důkladného porozumění a plánu obnovy po havárii.<\/EM><\/P><\/BODY><\/HTML>
<\/P>
A co ostatní opakující se datové body? Zpět k naší "Data Standard", většina dat, která sbíráme, musí být také opatřena atributy s diskrétními nebo spojitými hodnotami získanými z rastru, jako je nadmořská výška. Jistě, mohl bych napsat nějaký Python nebo C# kód pro tuto úlohu, ale tu třídu jsem vynechal...<\/P>
Toto předpokládá, že máte rastrový Digitální model terénu v SDE, který byl NEJDŘÍVE nakonfigurován pomocí ST_RASTER (
V tomto příkladu mám DEM s rozlišením 10 m pojmenovaný DEM10MP. V mé konvenci pojmenování "P" označuje, že tabulka je typu ST_PIXEL.<\/P>
Rozšiřuji trigger představený v
ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** spustit při vkládání a aktualizacích ******\\****** deaktivovat trigger při povolené SQL replikaci nebo zrcadlení ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypoteticky bychom mohli zadat lat\lon jako text a vytvořit objekt geography ******\ SHAPE = CASE WHEN i.SHAPE IS NOT NULL THEN p.SHAPE ELSE Geography::STPointFromText('POINT(' + CAST(p.LON AS VARCHAR(20)) + ' ' + CAST(p.LAT AS VARCHAR(20)) + ')', 4269) END, \****** obvyklý případ: bod je vytvořen ARC a převádí LAT\LON jako text ******\\****** z objektu geography ******\ LON = CASE WHEN p.SHAPE IS NULL THEN p.LON ELSE p.SHAPE.Long END, LAT = CASE WHEN p.SHAPE IS NULL THEN p.LAT ELSE p.SHAPE.Lat END, QuadName = COALESCE(b.name, p.QuadName), Watershed = COALESCE(c.HUC_12_Name, p.Watershed), County = COALESCE(d.Name, p.County), State= COALESCE(e.Name, p.State), PARKDISTRICT = COALESCE(f.District, p.PARKDISTRICT), ELEVATION = (SELECT<\/STRONG><\/SPAN>pdata.getValueByLoc(1,p.SHAPE.Long,p.SHAPE.Lat) FROM [dbo].[DEM10MP])<\/STRONG><\/SPAN> FROM TEST AS p \****** povolit aktualizaci lat\lon při aktualizaci ******\ INNER JOIN inserted AS i ON i.globalid = p.globalid LEFT OUTER JOIN USGS_24K_TOPOMAP_BOUNDARIES AS b ON b.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN WATERSHEDS AS c ON c.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN GRSM_COUNTIES AS d ON d.Shape.STIntersects(i.Shape) = 1 & nbsp ; LEFT OUTER JOIN GRSM_States AS e ON e.Shape.STIntersects(i.Shape) = 1 LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f ON f.Shape.STIntersects(i.Shape) = 1 ; ENDGO<\/PRE><\/P>Nyní pro každý nový bod, který přidám do této třídy prvků nebo upravím, je automaticky vyplněno nebo aktualizováno vše kromě jednoho pole.<\/P><\/P>Vždy.<\/P><\/P>Bez vstupu uživatele.<\/P><\/P><\/P><\/P>Toto je osobní blog a nedoporučuje, nepodporuje ani nepodporuje výše popsané metody. Úprava dat pomocí SQL mimo softwarový balík ESRI samozřejmě není podporována a neměla by být aplikována na produkční databázi bez důkladného porozumění a plánu obnovy po havárii.<\/EM><\/P><\/BODY><\/HTML>
Přihlášení členové mohou přispívat, sledovat aktualizace a další. Nový zde? Zaregistrujte si bezplatný účet.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.