YouTube | Facebook | X(Twitter) | RSS

BufferConstruction を使用したバッファー作成

2016/9/1 (木)

Type t = Type.GetTypeFromProgID ("esriGeometry.SpatialReferenceEnvironment");
ISpatialReferenceFactory pSpatialReferenceFactory = (ISpatialReferenceFactory)Activator.CreateInstance(t);
 
ISpatialReference wgs84 = pSpatialReferenceFactory.CreateGeographicCoordinateSystem(4326);  //WGS84
IUnit meter = pSpatialReferenceFactory.CreateUnit(9001);   //esriSRUnitType.esriSRUnit_Meter
 
//入力ポイント
IPoint inPoint = new PointClass();
inPoint.SpatialReference = wgs84;
inPoint.X = 135;
inPoint.Y = 35;
 
//GeometryBag に格納
IEnumGeometry inGeometries = new GeometryBagClass();
IGeometryCollection inGeometriesGC = (IGeometryCollection)inGeometries;
IGeometry inGeometriesG = (IGeometry)inGeometries;
inGeometriesG.SpatialReference = wgs84;
inGeometriesGC.AddGeometry(inPoint);
 
IGeometryCollection outGeometries = new GeometryBagClass();
 
//BufferConstruction
IBufferConstruction pBufferConstruction = new BufferConstructionClass();
IBufferConstructionProperties2 pBufferConstructionProperties2 = (IBufferConstructionProperties2)pBufferConstruction;
pBufferConstructionProperties2.UseGeodesicBuffering = true; //測地線距離
pBufferConstructionProperties2.Unit = meter;    //単位指定
 
IGeometry buffer = pBufferConstruction.Buffer((IGeometry)inPoint, 1000); //BufferメソッドはpBufferConstructionPropertiesの指定は効かない
pBufferConstruction.ConstructBuffers(inGeometries, 10000, outGeometries);
 
IArea pArea = (IArea)outGeometries.get_Geometry(0); //座標系は元のじおめとりと同じ
 
 
Console.WriteLine(outGeometries.get_Geometry(0).SpatialReference.Name);
Console.ReadKey();<small>小さなテキスト</small>
  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-,