私のGISデータのほとんど(実際にはすべて)には、私が「Mickey Mouse」属性値要件と呼んでいるものがあります:各フィーチャクラスには、行政区画(このポイントが属する州や郡など)のような退屈な情報を含むいくつかの属性フィールドがあります。過去には、データ編集者が自分のデータポイントが属する(郡、州、USGSトポ四角形)を選択できるように、精巧な属性ドメインを作成したことを非常に誇りに思っていました。<\/P>
<\/P>
しかし、誰もそれらを使いません。<\/P>
データ入力には時間と労力のコストがかかり、私たちの多くと同様に、重要なこと(このポイントで何が起こったか)に集中する必要があり、管理的なデータ入力に多くの時間を割くことはできません。<\/P>
ただし、(州、郡、または流域)ごとにデータ値を区分けする必要があるレポートの提出期限が迫るまでは。<\/P>
Using SQL to Auto-Populate XY Values<\/A> では、地理カラムから取得したWell-Known Textを使用してGPS座標の自動入力をトリガーで行う方法について説明しました。これを拡張して、さらにいくつかのデータメンテナンスタスクを処理することに何の問題もありません。<\/P><\/P>この例では、以下の行政境界ポリゴンフィーチャクラスすべてが「Geography」ストレージタイプおよびSRID 4629で同じSDEデータベースに設定されています。<\/P>GRSM_COUNTIES:Countyフィールドに郡名が入力されます;<\/LI>GRSM_States:Stateフィールドに州名が入力されます;<\/LI>GRSM_Sub_Ranger_Districts:Ranger District名がPARKDISTRICTフィールドに入力されます;<\/LI>USGS_24K_TOPOMAP_BOUNDARIES:QuadNameフィールドにUSGS四角形名が入力されます;<\/LI>WATERSHEDS:WatershedフィールドにHUC 12流域名が入力されます。<\/LI><\/LI><\/OL>私たちのデータポリシーでは、新しい各データポイントは、それが属する5つのポリゴンそれぞれの「Name」値で属性付けされます。新しいポイントを追加または編集するたびに、多数の値から5回もピックリストから選択しなければならないと言われたときのデータ編集者の熱意を想像してください!<\/P><\/P>Using SQL to Auto-Populate XY Values<\/A> を拡張して、新規または更新されたポイントを空間的にそれが属する5つのポリゴンそれぞれと「結合」し、ポリゴンから必要な値を取得して正しい属性フィールドに書き込むことができます。<\/P><\/P>ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\/****** 挿入および更新時に発火 ******\/\/****** SQLレプリケーションまたはミラーリング有効時はトリガー無効 ******\/after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \/****** 仮に緯度経度をテキストとして入力し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, \/****** 通常はARCでポイント作成し緯度経度をテキストとしてキャスト ******\/\/****** 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) FROM TEST AS p \/****** 更新時にも緯度経度更新許可 ******\/ 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ;;ENDGO<\/PRE><\/P>属性値を更新する空間クエリを自動化するために使用できる結合数には制限はありません。ただし、結合に参加する両方のフィーチャクラスは同じストレージタイプを使用する必要があることを忘れないでください。<\/P><\/P>しかし、既存データにこれを適用したい場合はどうでしょう?トリガー作成後、一度だけクエリを適用して既存値を更新できます。この例はGeometryストレージタイプを使用しています:<\/P><\/P>use GRSMupdate GRSM_TRAILSset CONG_DIST = CONGRESSIONALDISTRICTS.NAMELSADfrom GRSM_TRAILSinner join CONGRESSIONALDISTRICTSon grsm_trails.location_id = grsm_trails.location_idwhere (CONGRESSIONALDISTRICTS.Shape.STIntersection(grsm_trails.Shape).STDimension() = 1);<\/PRE><\/P>これは個人ブログであり、上記で説明した方法を推奨、支持、または保証するものではありません。ESRIソフトウェアスタック外でSQLによるデータ変更はサポートされておらず、生産データベースへの適用は十分な理解と災害復旧計画なしには行うべきではありません。<\/EM><\/P><\/BODY><\/HTML>
この例では、以下の行政境界ポリゴンフィーチャクラスすべてが「Geography」ストレージタイプおよびSRID 4629で同じSDEデータベースに設定されています。<\/P>
私たちのデータポリシーでは、新しい各データポイントは、それが属する5つのポリゴンそれぞれの「Name」値で属性付けされます。新しいポイントを追加または編集するたびに、多数の値から5回もピックリストから選択しなければならないと言われたときのデータ編集者の熱意を想像してください!<\/P>
ALTER TRIGGER [dbo].[TEST_GEOGRAPHY]ON [dbo].[TEST]\/****** 挿入および更新時に発火 ******\/\/****** SQLレプリケーションまたはミラーリング有効時はトリガー無効 ******\/after INSERT,UPDATE NOT FOR REPLICATIONAS BEGIN SET NOCOUNT ON; UPDATE p SET \/****** 仮に緯度経度をテキストとして入力し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, \/****** 通常はARCでポイント作成し緯度経度をテキストとしてキャスト ******\/\/****** 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) FROM TEST AS p \/****** 更新時にも緯度経度更新許可 ******\/ 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 ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ;& nbsp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ; & nb sp ;;ENDGO<\/PRE><\/P>属性値を更新する空間クエリを自動化するために使用できる結合数には制限はありません。ただし、結合に参加する両方のフィーチャクラスは同じストレージタイプを使用する必要があることを忘れないでください。<\/P><\/P>しかし、既存データにこれを適用したい場合はどうでしょう?トリガー作成後、一度だけクエリを適用して既存値を更新できます。この例はGeometryストレージタイプを使用しています:<\/P><\/P>use GRSMupdate GRSM_TRAILSset CONG_DIST = CONGRESSIONALDISTRICTS.NAMELSADfrom GRSM_TRAILSinner join CONGRESSIONALDISTRICTSon grsm_trails.location_id = grsm_trails.location_idwhere (CONGRESSIONALDISTRICTS.Shape.STIntersection(grsm_trails.Shape).STDimension() = 1);<\/PRE><\/P>これは個人ブログであり、上記で説明した方法を推奨、支持、または保証するものではありません。ESRIソフトウェアスタック外でSQLによるデータ変更はサポートされておらず、生産データベースへの適用は十分な理解と災害復旧計画なしには行うべきではありません。<\/EM><\/P><\/BODY><\/HTML>
サインインしたメンバーは投稿、更新のフォローなどができます。初めてですか?無料アカウントを登録してください。
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.