In Repetitive Attribute Values Automated with SQL<\/A> haben wir eine Automatisierung für sich wiederholende Dateneingaben mit Feature-Classes hinzugefügt, die den Microsoft Geography-Speichertyp verwenden.<\/P><\/P>Aber wie sieht es mit anderen sich wiederholenden Datenpunkten aus? Zurück zu unserem "Data Standard", ein Großteil der gesammelten Daten muss auch mit diskreten oder kontinuierlichen Werten versehen werden, die aus einem Raster, wie z.B. der Höhe, gewonnen werden. Sicher, ich könnte etwas Python- oder C#-Code schreiben, um das zu erledigen, aber ich habe diesen Kurs ausgelassen...<\/P><\/P>Dies setzt voraus, dass Sie ein Raster-Digitales Höhenmodell in SDE haben, das ZUERST mit ST_RASTER (ArcGIS Help 10.1<\/A>) konfiguriert wurde und dann in eine ST_PIXEL-Tabelle mit SRID 4269 kopiert wurde.<\/P><\/P>In diesem Beispiel habe ich ein DEM mit 10-m-Auflösung namens DEM10MP. In meiner Benennungskonvention zeigt das "P" an, dass die Tabelle vom Typ ST_PIXEL ist.<\/P><\/P>Als Erweiterung des Triggers aus Repetitive Attribute Values Automated with SQL<\/A> füge ich einfach eine Get Value By Location-Abfrage hinzu, die den LAT\LON-Wert aus der eingefügten oder aktualisierten Geography-Spalte verwendet. Der gesamte Trigger sieht so aus. Zeile 25\26 enthält die Höhenabfrage.<\/P><\/P>ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** feuert bei Einfügungen und Aktualisierungen ******\\****** deaktiviert Trigger bei aktivierter SQL-Replikation oder Spiegelung ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothetisch könnten wir lat/lon als Text eingeben und ein Geography-Objekt erstellen ******\ 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, \****** üblicher Fall: Punkt wird mit ARC erstellt und castet LAT/LON als Text ******\\****** aus dem Geography-Objekt ******\ 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 \****** erlaubt Aktualisierung von lat/lon bei Update ******\ 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_States AS e  ;& nbsp ;& nbsp ; ON e.Shape.STIntersects(i.Shape) = 1 & nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f on f.Shape.STIntersects(i.Shape) = 1 & nbsp ; ; ENDGO< /PRE >< P >< / P >< P > Jetzt wird für jeden neuen Punkt, den ich zu dieser Feature-Class hinzufüge oder bearbeite, bis auf ein Feld alles automatisch ausgefüllt oder aktualisiert.< / P >< P >< / P >< P > Jedes Mal.< / P >< P >< / P >< P > Keine Benutzereingabe.< / P >< P >< / P >< P >< IMG __jive_id="46010" alt="rewr.JPG" class="jive-image image-1" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/46010_rewr.JPG" style="height: auto; display: block; margin-left: auto; margin-right: auto;" />< / P >< P >< / P >< P >< EM style="font-size: 13px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;">Dies ist ein persönlicher Blog und empfiehlt, unterstützt oder befürwortet nicht die oben beschriebenen Methoden. Die Änderung von Daten mittels SQL außerhalb des ESRI-Softwarestapels wird natürlich nicht unterstützt und sollte ohne gründliches Verständnis und Notfallwiederherstellungsplan nicht auf einer Produktionsdatenbank angewendet werden.< / EM >< / P >< / BODY >< / HTML >
<\/P>
Aber wie sieht es mit anderen sich wiederholenden Datenpunkten aus? Zurück zu unserem "Data Standard", ein Großteil der gesammelten Daten muss auch mit diskreten oder kontinuierlichen Werten versehen werden, die aus einem Raster, wie z.B. der Höhe, gewonnen werden. Sicher, ich könnte etwas Python- oder C#-Code schreiben, um das zu erledigen, aber ich habe diesen Kurs ausgelassen...<\/P>
Dies setzt voraus, dass Sie ein Raster-Digitales Höhenmodell in SDE haben, das ZUERST mit ST_RASTER (
In diesem Beispiel habe ich ein DEM mit 10-m-Auflösung namens DEM10MP. In meiner Benennungskonvention zeigt das "P" an, dass die Tabelle vom Typ ST_PIXEL ist.<\/P>
Als Erweiterung des Triggers aus
ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** feuert bei Einfügungen und Aktualisierungen ******\\****** deaktiviert Trigger bei aktivierter SQL-Replikation oder Spiegelung ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothetisch könnten wir lat/lon als Text eingeben und ein Geography-Objekt erstellen ******\ 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, \****** üblicher Fall: Punkt wird mit ARC erstellt und castet LAT/LON als Text ******\\****** aus dem Geography-Objekt ******\ 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 \****** erlaubt Aktualisierung von lat/lon bei Update ******\ 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_States AS e  ;& nbsp ;& nbsp ; ON e.Shape.STIntersects(i.Shape) = 1 & nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f on f.Shape.STIntersects(i.Shape) = 1 & nbsp ; ; ENDGO< /PRE >< P >< / P >< P > Jetzt wird für jeden neuen Punkt, den ich zu dieser Feature-Class hinzufüge oder bearbeite, bis auf ein Feld alles automatisch ausgefüllt oder aktualisiert.< / P >< P >< / P >< P > Jedes Mal.< / P >< P >< / P >< P > Keine Benutzereingabe.< / P >< P >< / P >< P >< IMG __jive_id="46010" alt="rewr.JPG" class="jive-image image-1" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/46010_rewr.JPG" style="height: auto; display: block; margin-left: auto; margin-right: auto;" />< / P >< P >< / P >< P >< EM style="font-size: 13px; font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif;">Dies ist ein persönlicher Blog und empfiehlt, unterstützt oder befürwortet nicht die oben beschriebenen Methoden. Die Änderung von Daten mittels SQL außerhalb des ESRI-Softwarestapels wird natürlich nicht unterstützt und sollte ohne gründliches Verständnis und Notfallwiederherstellungsplan nicht auf einer Produktionsdatenbank angewendet werden.< / EM >< / P >< / 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.