我正在ArcGis的帮助下从 shapefile 创建自定义地图。之后我如何在自定义地图上绘制已经存储的 latlng?如果 shapefile 更新的自定义地图将更新,我如何在自定义地图上维护已经保存的 latlng?
1 回答
首先,这是您如何使用 DotSpatial 将点和属性添加到现有 shapefile。
[TestMethod]
public void AddPoint()
{
Shapefile shp = Shapefile.OpenFile(@"D:\Data\Temp\CatPoints.shp");
IFeature cat = shp.AddFeature(new Point((new Coordinate(-119, 39))));
cat.DataRow["Name"] = "Leopard";
cat.DataRow["Longitude"] = -119.0000;
cat.DataRow["Latitude"] = 39.0000;
shp.Save();
}
请务必注意,地图文档(.mxd 文件)不存储数据,因此更新 shapefile (.shp) 将自动更新地图的内容。如果您的问题是关于如何使用经度和纬度值创建 shapefile,以下是创建 shapefile,然后将其保存为地图的演练。如果您已经有一个现有的 shapefile,您可以跳到第 5 步。
假设您在现有数据源(如 excel 文件)中具有初始纬度和经度。
1)使用添加数据按钮添加数据,浏览到excel文件并选择excel表。
2) 右键单击目录中的“Sheet1$”图层并选择显示 XY 数据...
3) 经度和纬度应自动填充为 X 字段和 Y 字段。您应该使用编辑按钮并选择地理坐标系 -> 世界 -> WGS1984 作为纬度经度的坐标系。(如果您在像美国这样的西半球,请确保您的经度为负数。)。单击确定。
4) 右键单击新创建的 Sheet1$ Events 图层并选择 Data->Export Data... 以便将此图层导出为 shapefile。选择“所有功能”选项,然后指定以“.shp”结尾的名称。这个很重要。如果您保存到个人地理数据库或文件地理数据库,DotSpatial 以后将无法更新您的内容。单击确定。当它询问您是否要将新创建的 shapefile 添加到地图时,选择是。
5) 然后您可以使用 File->Add Data->Add Basemap 功能将底图添加到背景中。单击要添加的底图类型。
6) 要添加任何其他现有的 shapefile,(或者如果您已经有一个现有的 shapefile 要用于创建地图),请使用添加数据按钮,这是黄色正方形等轴测视图上的带圆圈的加号按钮。
7) 保存您的地图。这是重要的部分。您拥有的任何图层都可以作为“地图”文档存储在 ArcGIS 中。这并不存储实际数据本身,而是简单地指向 shapefile。因此,当您在 DotSpatial 中对 shapefile 进行更改时,这些更改将出现在您的地图中。
8) 如果用户界面中已经打开了 SHP,我不确定 ArcGIS 是否会自动获取对 SHP 的更改。您可能需要关闭地图并在 ArcGIS 中再次打开才能查看新点。