Repetitive Attribute Values Automated with SQL<\/A> では、Microsoft Geographyストレージタイプを使用しているフィーチャクラスを使った繰り返しのデータ入力にいくつかの自動化を追加しました。<\/P><\/P>しかし、他の繰り返しのデータポイントはどうでしょう?私たちの「Data Standard」に戻ると、収集する多くのデータも標高などのラスターから取得した離散的または連続的な値で属性付けする必要があります。もちろん、これを処理するためにPythonやC#のコードを書いてもいいのですが、そのクラスはサボりました...<\/P><\/P>これは、まずST_RASTER (ArcGIS Help 10.1<\/A>) を使って構成されたSDE内のラスターDigital Elevation Modelがあり、それがSRID 4269でST_PIXELテーブルにコピーされていることを前提としています。<\/P><\/P>この例では、DEM10MPという名前の10メートル解像度のDEMがあります。私の命名規則では、「P」はテーブルがST_PIXELタイプであることを示しています。<\/P><\/P>Repetitive Attribute Values Automated with SQL<\/A> で提示されたトリガーを拡張し、挿入または更新されたGeography列からのLAT/LON値を使ってGet Value By Locationクエリを単純に追加します。トリガー全体は以下の通りです。25行目と26行目には標高クエリが含まれています。<\/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 ; LEFT OUTER JOIN GRSM_States AS e & nbsp ;& nbsp ;& nbsp ;& nbsp ; ON e.Shape.STIntersects(i.Shape) = 1 & nbsp ;& nbsp ;& nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f ON f.Shape.STIntersects(i.Shape) = 1 & nbsp ; ; ENDGO< /PRE >< P >< / P >< P >このフィーチャクラスに新しいポイントを追加または編集するたびに、一つのフィールドを除いてすべて自動的に入力または更新されます。< / P >< P >< / P >< P >毎回です。< / P >< P >< / P >< P >ユーザー入力なし。< / 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;">これは個人ブログであり、上記の方法を推奨、支持、またはサポートするものではありません。ESRIソフトウェアスタック外でSQLを使用してデータを変更することはサポートされておらず、十分な理解と災害復旧計画なしに本番データベースに適用すべきではありません。< / EM >< / P >< / BODY >< / HTML >
<\/P>
しかし、他の繰り返しのデータポイントはどうでしょう?私たちの「Data Standard」に戻ると、収集する多くのデータも標高などのラスターから取得した離散的または連続的な値で属性付けする必要があります。もちろん、これを処理するためにPythonやC#のコードを書いてもいいのですが、そのクラスはサボりました...<\/P>
これは、まずST_RASTER (
この例では、DEM10MPという名前の10メートル解像度のDEMがあります。私の命名規則では、「P」はテーブルがST_PIXELタイプであることを示しています。<\/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 ; LEFT OUTER JOIN GRSM_States AS e & nbsp ;& nbsp ;& nbsp ;& nbsp ; ON e.Shape.STIntersects(i.Shape) = 1 & nbsp ;& nbsp ;& nbsp ;& nbsp ; LEFT OUTER JOIN GRSM_SUB_RANGER_DISTRICTS AS f ON f.Shape.STIntersects(i.Shape) = 1 & nbsp ; ; ENDGO< /PRE >< P >< / P >< P >このフィーチャクラスに新しいポイントを追加または編集するたびに、一つのフィールドを除いてすべて自動的に入力または更新されます。< / P >< P >< / P >< P >毎回です。< / P >< P >< / P >< P >ユーザー入力なし。< / 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;">これは個人ブログであり、上記の方法を推奨、支持、またはサポートするものではありません。ESRIソフトウェアスタック外でSQLを使用してデータを変更することはサポートされておらず、十分な理解と災害復旧計画なしに本番データベースに適用すべきではありません。< / EM >< / P >< / BODY >< / HTML >
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.