ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

时间:2024-03-19 20:35:55

有时需要把面矢量打散成散点图,有时又需要合并有序点生成一个完整的面矢量,就是这篇的主要内容了。

我用这个功能是先将面转点,而后在转回面。因为点转面时必须导入某一格式的txt才能识别并将相同图斑的点聚集在一起。因此,在面转点时需要分两步进行:首先将面矢量打散得到折点,并导出其相应的属性和序号信息;然后将点矢量导出为特殊格式的txt,然后利用Excel进行分块。

一、面转点

1.1、打散得到折点属性以及序号等信息:利用下图进行折点转点得到折点矢量(点矢量文件),然后在得到的点矢量中计算每个点的地理坐标(以度为单位的,下图中,得到的结果是116.12345;39.12345这种的),再导出点的属性表到Excel中,然后进行下一步

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

1.2、利用下图samples工具(其中samples工具默认是隐藏的,打开方法请参考这篇博客)将点导出到txt文件中,注意,导出时的文件名需要带上.txt(下图只写899不可以,899.txt才行),导出来的文件中只有序号和坐标,没有其他属性了【只有这种格式的才能导入arcgis再次生成面】

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量  ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

1.3、将面矢量的属性导出到Excel中备用,后面恢复面文件后需要没有属性,只有靠它进行链接添加。

二、点转面

2.1、将步骤1.2中导出的txt文件分块:

步骤1.1中折点导出的Excel表格中的ORIG_FID的序号是该点对应图斑的编号,同一编号表示是同一图斑上的点。使用这个编号可以将1.2中得到的txt按照图斑分类,即:在同一个图斑点的后面回车得到下一行并添加一个END。

把所有的点按照图斑分类后,把最前边的Point改成Polygon。(此步骤有便捷加END的方法,参见第三章)

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量  

2.2,然后再利用samples的工具转回到面矢量

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

对话框设置如下:

a.其中的Input Decimal Separator填写“12345678.12345”或者“11111111.11111”。

b.最后一行的Spatial Refreence选择:地理坐标系(Geographic Coordinate Systems)>亚洲(Asia)>beijing1954【因为:这些坐标点的坐标是在地理坐标系下计算的(经纬度,不是6位的那种),所以再生成面时就要用地理坐标系,而地理坐标系的图斑矢量不能计算面积,故而需要用“Project”工具转成投影坐标。。。如果这些点是用投影坐标计算的坐标(6位数的那种),那么再生成面时就要用相应的投影坐标)】

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

2.3将面矢量属性链接1.3中得到属性表,就可以得到和未拆开成点之前的面矢量一样的了。

三、统一加END

3.1、新建Excel,点击“数据”>“自文本”读入1.2的txt文件,勾选下列分隔符:

ArcGIS小知识(三)——矢量面转点、点转面(arcgis),面矢量转点矢量

3.2、把1.1折点的属性表中的的ORIG_FID列复制到目前的表中。

3.3、选中ORIG_FID列,点击Excel工具栏“数据”>“分类汇总”,可以把不同的图斑序号分开。然后使用通配符对“0计数,1计数……”这一列进行替换,即:“*计数”替换为“END”。然后再新建一个列,使它等于point列(point列指第一行是point,下面几行是序号0/1/2/3/4……的那一列)和END列的组合,因为END最终要插入到序号列中才能将不同序号但相同图斑的点分开。公式为:=A1&B1。

3.4、恢复成txt样式:接着对存放坐标的那两列设置格式,选中相应的那两列,然后右击选择“设置单元格格式”,将小数点后设为9位(不一定是9,目的是为了将其全部位数显示出来,因为Excel默认只显示两位小数)。在旁边的空白列中,将前边的所有列都链接放在这一个列中,并在每一个中间加一个空格,公式为: =A1&" "&B1&" "&C1&" "&D1&" "&E1。得到和1.2中txt数据完全类似的格式。再把这一列复制到新建的.txt中,并且别忘了把第一行的Point改成Polygon。