一次,遇到一个问题,需要计算ArcMap中一个图层的所有面要素的面积。如图,这个图层中包括多个省级行政区矢量面要素,现在需要分别计算其中每一个要素各自的面积。
这里有一个方便的办法。
首先我们新建一个字段。打开图层属性表,选择“Add Field”。
在弹出的界面中,配置如下。其中,“Name”大家可以随意,“Type”选择“Float”,下方的字段属性中,“Precision”为字段的所有数字位数,无论是在小数点左边还是右边;“Scale”则为小数点右边的数字位数,也就是保留几位小数。例如:365.20
的Precision
就是5
,Scale
就是2
。
可以看到,已经新建了一个字段。
在新建的字段名称上右键,选择“Calculate Geometry”。
弹出了一个提示,大概意思是说:我没有在开启编辑模式的情况下进行字段计算,那么这样会让计算变得快一些,但是一旦计算开始,就不能撤回。
因此,追求计算速度还是追求可以撤回,依据大家的实际情况来就好。因为我这里数据不多,计算也比较简单,因此就直接选择了继续。
点击“Yes”之后,在弹出的窗口中第一个“Property”下拉框中选择面积,也就是“Area”;此时发现我的“Area”后面跟着一个“Disabled”。为什么处于这种状态呢?
一般的,出现上述情况都是因为我们的面要素(也就是这个图层)处于地理坐标系,而并不是投影坐标系。二者最简单的区别就是,地理坐标系用经度、纬度作为空间衡量指标,而投影坐标系用米、千米等长度单位作为空间衡量指标。
那么,我们就来看看我们现在是不是处于地理坐标系状态。在图层列表中,右击我们当前的图层的名称,选择“Properties”。
选择“Source”,可以看到,图层的地理坐标系统(“Geographic Coordinate System”)为“WGS_1984”,这是一个地理坐标系,而非投影坐标系。
因此,如果我们需要计算面积,必须将这一图层转为投影坐标系。
具体转换的方法,点击查看这篇博客(https://blog.csdn.net/zhebushibiaoshifu/article/details/115216717)即可,这里就不赘述啦~
转换为投影坐标系后,打开新图层的属性表,可以看到我们刚刚新建的字段在这里也是存在的。
依据同样的方法,打开“Calculate Geometry”,可以看到此时“Area”就不再带着“Disabled”了。
其中,“Coordinate System”选择第一项,也就是图层自身的坐标系,也就是刚刚我们给他投影所选用的投影坐标系;“Units”是单位,大家依据实际情况来就好。我在这里选择平方米~
点击“OK”。可以看到“Area”字段已经有面积了。
那么,我们对这个计算出来的面积随机验证一下。用河南来验证,计算面积为165982687427.8129平方米,也就是165982.69平方千米;我们看看实际面积:
差了大概1000平方千米。不能说很准确,但是还是可以满足基本的大尺度区域分析了。在这里,精度误差可能的来源包括所用省级行政区shp文件精度、投影坐标系选用等。大家依据各自的研究需要,来决定需不需要对面积数据精度加以提升;可用的提升方法包括更换投影坐标系、采用更精确的行政区图层等方法。
再用北京试一下。计算的面积为16394318646.91106平方米,也就是16394.32平方千米;实际面积:
这个就很准确了~
那么,能不能求出图层中所有矢量要素面积的和呢?可以的~在“Area”字段名称上右键,选择“Statistics”。
这里可以对全部字段的样本数量、极值、综合、平均值、标准差、Null值个数等加以查看,非常方便。
欢迎关注公众号:疯狂学习GIS