Dans Valeurs d'attributs répétitives automatisées avec SQL<\/A> nous avons ajouté une certaine automatisation à la saisie répétitive de données en utilisant des classes d'entités qui utilisent le type de stockage Microsoft Geography.<\/P><\/P>Mais qu'en est-il des autres points de données répétitifs ? Revenons à notre "Data Standard", une grande partie des données que nous collectons doit également être attribuée avec des valeurs discrètes ou continues obtenues à partir d'un raster, comme l'élévation. Bien sûr, je pourrais écrire un peu de code Python ou C# pour gérer cela, mais j'ai sauté ce cours...<\/P><\/P>Cela suppose que vous disposez d'un modèle numérique d'élévation raster dans SDE qui a été D'ABORD configuré en utilisant ST_RASTER (Aide ArcGIS 10.1<\/A>) puis copié dans une table ST_PIXEL avec SRID 4269.<\/P><\/P>Dans cet exemple, j'ai un MNE à résolution 10 m nommé DEM10MP. Dans ma convention de nommage, le "P" indique que la table est de type ST_PIXEL.<\/P><\/P>En étendant le déclencheur présenté dans Valeurs d'attributs répétitives automatisées avec SQL<\/A> j'ajoute simplement une requête Get Value By Location utilisant la valeur LAT\LON de la colonne Geography insérée ou mise à jour. Le déclencheur complet ressemble à ceci. Les lignes 25\26 incluent la requête d'élévation.<\/P><\/P>ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** déclenché lors des insertions et mises à jour ******\\****** désactiver le déclencheur lorsque la réplication SQL ou le mirroring est activé ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothétiquement nous pourrions entrer la lat/lon en texte et créer un objet 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, \****** cas habituel où le point est créé avec ARC et convertit la LAT/LON en texte ******\\****** depuis l'objet 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 \****** permettre la mise à jour de lat/lon lors de la mise à jour ******\ 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>Maintenant, pour chaque nouveau point que j'ajoute à cette classe d'entités, ou modifie, tous les champs sauf un sont automatiquement remplis ou mis à jour.<\/P><\/P>À chaque fois.<\/P><\/P>Aucune saisie utilisateur.<\/P><\/P><\/P><\/P>Ceci est un blog personnel et ne recommande pas, n'endosse pas et ne soutient pas les méthodes décrites ci-dessus. La modification des données en utilisant SQL en dehors de la pile logicielle ESRI n'est bien sûr pas prise en charge et ne doit pas être appliquée à une base de données de production sans une compréhension approfondie et un plan de récupération en cas de sinistre.<\/EM><\/P><\/BODY><\/HTML>
<\/P>
Mais qu'en est-il des autres points de données répétitifs ? Revenons à notre "Data Standard", une grande partie des données que nous collectons doit également être attribuée avec des valeurs discrètes ou continues obtenues à partir d'un raster, comme l'élévation. Bien sûr, je pourrais écrire un peu de code Python ou C# pour gérer cela, mais j'ai sauté ce cours...<\/P>
Cela suppose que vous disposez d'un modèle numérique d'élévation raster dans SDE qui a été D'ABORD configuré en utilisant ST_RASTER (
Dans cet exemple, j'ai un MNE à résolution 10 m nommé DEM10MP. Dans ma convention de nommage, le "P" indique que la table est de type ST_PIXEL.<\/P>
En étendant le déclencheur présenté dans
ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\****** déclenché lors des insertions et mises à jour ******\\****** désactiver le déclencheur lorsque la réplication SQL ou le mirroring est activé ******\after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \****** hypothétiquement nous pourrions entrer la lat/lon en texte et créer un objet 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, \****** cas habituel où le point est créé avec ARC et convertit la LAT/LON en texte ******\\****** depuis l'objet 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 \****** permettre la mise à jour de lat/lon lors de la mise à jour ******\ 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>Maintenant, pour chaque nouveau point que j'ajoute à cette classe d'entités, ou modifie, tous les champs sauf un sont automatiquement remplis ou mis à jour.<\/P><\/P>À chaque fois.<\/P><\/P>Aucune saisie utilisateur.<\/P><\/P><\/P><\/P>Ceci est un blog personnel et ne recommande pas, n'endosse pas et ne soutient pas les méthodes décrites ci-dessus. La modification des données en utilisant SQL en dehors de la pile logicielle ESRI n'est bien sûr pas prise en charge et ne doit pas être appliquée à une base de données de production sans une compréhension approfondie et un plan de récupération en cas de sinistre.<\/EM><\/P><\/BODY><\/HTML>
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.