YouTube | Facebook | Twitter  Feed

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>

関連記事

  • この記事を書いた人

羽田 康祐

Esri認定インストラクター、GIS上級技術者、測量士補、潜水士。GISy / GISc とその関連分野である地理学・地図学について日々の出来事で学んだ記憶を記録するためにブログを書いています。行動原理は伊達と酔狂。好きな地形は圏谷。好きな地図投影法はパースクインカンシャル図法。呉市生まれ広島市出身。GIS を使った自己紹介はこちら

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

© 2020 WINGFIELD since1981