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

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>