In Repetitive Attribute Values Automated with SQL<\/A> hebben we wat automatisering toegevoegd aan repetitieve gegevensinvoer met behulp van feature classes die het Microsoft Geography opslagtype gebruiken.<\/P><\/P>Maar hoe zit het met andere repetitieve datapunten? Terug naar onze "Data Standard", veel van de data die we verzamelen moet ook worden toegeschreven met discrete of continue waarden verkregen uit een raster, zoals hoogte. Natuurlijk, ik zou wat Python- of C#-code kunnen schrijven om dit te verwerken, maar ik heb die klas overgeslagen...<\/P><\/P>Dit gaat ervan uit dat je een raster Digital Elevation Model in SDE hebt dat EERST is geconfigureerd met ST_RASTER (ArcGIS Help 10.1<\/A>) en vervolgens is gekopieerd naar een ST_PIXEL tabel met SRID 4269.<\/P><\/P>In dit voorbeeld heb ik een 10-m resolutie DEM genaamd DEM10MP. In mijn naamgevingsconventie geeft de "P" aan dat de tabel van het type ST_PIXEL is.<\/P><\/P>Als uitbreiding op de trigger gepresenteerd in Repetitive Attribute Values Automated with SQL<\/A> voeg ik eenvoudig een Get Value By Location query toe met gebruik van de LAT\/LON waarde uit de ingevoegde of bijgewerkte Geography kolom. De volledige trigger ziet er zo uit. Regel 25\/26 bevat de hoogtequery.<\/P><\/P>ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** fire on inserts and updates ******\\****** disable trigger when SQL replication or mirroring is enabled ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothetically we could enter the lat\/lon as text and create a geography object ******\ 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, \****** usual case point is created with ARC and casts the LAT\/LON as text ******\\****** from the geography object ******\ 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 \****** allow upate of lat\/lon on 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& 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>Nu wordt voor elk nieuw punt dat ik toevoeg aan deze feature class, of bewerk, alle velden behalve één automatisch ingevuld of bijgewerkt.<\/P><\/P>Elke keer weer.<\/P><\/P>Geen gebruikersinvoer.<\/P><\/P><\/P><\/P>Dit is een persoonlijke blog en beveelt de hierboven beschreven methoden niet aan, onderschrijft ze niet en ondersteunt ze niet. Het wijzigen van data met SQL buiten de ESRI software stack wordt uiteraard niet ondersteund en mag niet worden toegepast op een productie database zonder grondig begrip en een rampenherstelplan.<\/EM><\/P><\/BODY><\/HTML>
<\/P>
Maar hoe zit het met andere repetitieve datapunten? Terug naar onze "Data Standard", veel van de data die we verzamelen moet ook worden toegeschreven met discrete of continue waarden verkregen uit een raster, zoals hoogte. Natuurlijk, ik zou wat Python- of C#-code kunnen schrijven om dit te verwerken, maar ik heb die klas overgeslagen...<\/P>
Dit gaat ervan uit dat je een raster Digital Elevation Model in SDE hebt dat EERST is geconfigureerd met ST_RASTER (
In dit voorbeeld heb ik een 10-m resolutie DEM genaamd DEM10MP. In mijn naamgevingsconventie geeft de "P" aan dat de tabel van het type ST_PIXEL is.<\/P>
Als uitbreiding op de trigger gepresenteerd in
ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** fire on inserts and updates ******\\****** disable trigger when SQL replication or mirroring is enabled ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothetically we could enter the lat\/lon as text and create a geography object ******\ 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, \****** usual case point is created with ARC and casts the LAT\/LON as text ******\\****** from the geography object ******\ 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 \****** allow upate of lat\/lon on 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& 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>Nu wordt voor elk nieuw punt dat ik toevoeg aan deze feature class, of bewerk, alle velden behalve één automatisch ingevuld of bijgewerkt.<\/P><\/P>Elke keer weer.<\/P><\/P>Geen gebruikersinvoer.<\/P><\/P><\/P><\/P>Dit is een persoonlijke blog en beveelt de hierboven beschreven methoden niet aan, onderschrijft ze niet en ondersteunt ze niet. Het wijzigen van data met SQL buiten de ESRI software stack wordt uiteraard niet ondersteund en mag niet worden toegepast op een productie database zonder grondig begrip en een rampenherstelplan.<\/EM><\/P><\/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.