加载ArcGIS数字化图像

我是GIS平台的新手。

在我的项目(Windows应用程序)中,我正在尝试在PictureBox中加载图像(区域的无人机图像)是GeoTIFF格式,大约950+ MB。 此图像已数字化(标记每个房屋的边界并标记为房屋号)和在Shapefile中导入的数据。 我使用以下代码提取XY坐标数据。 我将原始图像大小缩小到大约40-45 MB,并以JPG格式转换。

现在我必须在新的缩小图像上绘制我的Windows应用程序中的XY坐标数据。

我该如何实现这种情况? 我该怎么办? 我无法加载大约950+ MB的原始图像?

代码用于从Shapefile获取XY坐标

private void ReadShapeFile(string path) { ShapeFile.MapFilesInMemory = true; // open the shapefile EGIS.ShapeFileLib.ShapeFile sf = new EGIS.ShapeFileLib.ShapeFile(path); try { sf.RenderSettings = new EGIS.ShapeFileLib.RenderSettings(path, "", this.Font); EGIS.ShapeFileLib.DbfReader dbfr = sf.RenderSettings.DbfReader; using (System.IO.StreamWriter writer = new System.IO.StreamWriter("output.txt")) { EGIS.ShapeFileLib.ShapeFileEnumerator sfEnum = sf.GetShapeFileEnumerator(); int recordIndex = 0; while (sfEnum.MoveNext()) { string rec = ""; string NoOfCord = ""; string coord = ""; rec = string.Format("Record:{0}", recordIndex); writer.WriteLine(string.Format("Record:{0}", recordIndex)); System.Collections.ObjectModel.ReadOnlyCollection pointRecords = sfEnum.Current; foreach (PointD[] pts in pointRecords) { writer.Write(string.Format("[NumPoints:{0}]", pts.Length)); NoOfCord = string.Format("[NumPoints:{0}]", pts.Length); for (int n = 0; n  0) writer.Write(','); writer.Write(pts[n].ToString()); if (n > 0) coord += ","; coord += pts[n].ToString(); } writer.WriteLine(); } AddDataToDataTable(recordIndex, rec, NoOfCord, coord); ++recordIndex; } sfEnum.Dispose(); } MessageBox.Show("Data Loaded Successfully"); } catch (Exception ex) { Debug.WriteLine("Error Message - " + enl + ex.Message + enl + "Error StackTrace - " + enl + ex.StackTrace + enl); } finally { sf.Close(); sf.Dispose(); } } 

第一 :加载巨大的图像需要金字塔或瓷砖切割; 如果您希望您的应用程序显示完整的图像,请切割平铺或构建金字塔,然后在mapcontrol中显示在dotspatialsharpmap库中。

第二 :如果您没有裁剪图像,则处理后的图像与原始图像具有相同的真实范围 。 您可以计算图像中任何像素的实际位置 ; 您还可以将实际位置(纬度/经度或投影坐标)转换为图像坐标参考 (左上角为(0,0))。