ArcObjects axMapControl 指定座標にPan
[code]
ESRI.ArcGIS.Geometry.IPoint pt = new ESRI.ArcGIS.Geometry.Point();
pt.PutCoords(-35708, -53655);
axMapControl1.CenterAt(pt);
axMapControl1.Refresh();
[/code]
ちなみに以下の方法で座標を設定したら正しく動作しなかった
[code]
ESRI.ArcGIS.Geometry.IPoint pt = new ESRI.ArcGIS.Geometry.Point(-35708, -53655);
[/code]
更にMAPと空間データの座標刑が違う場合はstackoverflow Converting Lat / long to PointClassを参照
念の為
[code]
ISpatialReferenceFactory srFactory = new SpatialReferenceEnvironmentClass();
IGeographicCoordinateSystem gcs = srFactory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
ISpatialReference sr1 = gcs;
IPoint point = new PointClass() as IPoint;
point.PutCoords(-92.96000, 44.9227);
IGeometry geometryShape;
geometryShape = point;
geometryShape.SpatialReference = sr1;
geometryShape.Project(mapControl.SpatialReference);
mapControl.DrawShape(geometryShape);
[/code]
ArcObjects MapControl上での画面座標(pixel)と地図座標の相互変換
// 地図のEPSGが2451の場合
地図座標をピクセルに変換
[code]
ESRI.ArcGIS.Geometry.IPoint pt = new ESRI.ArcGIS.Geometry.Point();
pt.PutCoords(-35708, -53655);
ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = axMapControl1.ActiveView.ScreenDisplay;
int x;
int y;
screenDisplay.DisplayTransformation.FromMapPoint(pt, out x, out y);
[/code]
ピクセルを地図座標に変換
[code]
ESRI.ArcGIS.Display.IScreenDisplay screenDisplay = axMapControl1.ActiveView.ScreenDisplay;
ESRI.ArcGIS.Geometry.IPoint point = screenDisplay.DisplayTransformation.ToMapPoint(100, 100);
[/code]
Spatialiteの空間データテーブルをArcObjectsに表示
[code]
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SqlWorkspaceFactoryClass();
ESRI.ArcGIS.Geodatabase.IFeatureWorkspace featureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)workspaceFactory1.OpenFromFile(@"Spatialiteフルパス", 0);
ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass = featureWorkspace.OpenFeatureClass("テーブル名");
ESRI.ArcGIS.Carto.IFeatureLayer featureLayer = new ESRI.ArcGIS.Carto.FeatureLayerClass();
featureLayer.FeatureClass = featureClass;
featureLayer.Name = "レイヤ名";
axMapControl1.AddLayer(featureLayer);
[/code]
GeoTIFFのExtentを表示
GeoTIFFのExtentはGDALのユーティリティgdalinfoで表示可能。
gdalinfoのサイト
Windows上で動作するコンパイル済みのGDALモジュールはOsgeoのwikiのダウンロードサイトにあるリンクからたどった
Gisinternalsよりダウンロード

今回は1.9.2 vc2008 32bit版(release-1500-gdal-1-9-2-mapserver-6-2-0.zip)をダウンロード

圧縮ファイル内のbinディレクトリにあるdllとbin\gdal\appsにあるgdalinfo.exeをドイツのディレクトリにおいてコマンドからGEOTIFFのパスを渡すとgeotiffのExtenを含めて各種の情報を表示
OpenLayersでOSMが表示されない
OpenLayersでOSMの地図を表示していたのがだ、なぜか表示されなくなった。
7月にMapQuestが使えなくなり、OSMに切り替えたのだがOSMもとは・・・
OpenLayersのsampleをサイトを見ると表示されている。
表示される
[code]
layer_base = new OpenLayers.Layer.OSM();
[/code]
表示される
[code]
layer_base = new OpenLayers.Layer.OSM( "Simple OSM Map");
[/code]

