ArcMap使用技巧

标签: Arcgis 分类: Gis 创建时间:2019-08-13 07:40:04 更新时间:2025-01-17 10:39:21

毕业很多年了,再次拿出来ArcMap作图,还是有很多不熟悉的东西了,写个记录篇记录下。

1.ArcCatalog打开目录树

选择菜单栏->windows->Catalog Tree

2.编辑图层时显示错误

The feature`s geometry could not be modified.

The Create Feature task could not be completed.

关掉这个arcmap,重新打开一个,重新加载图层,然后重新编辑就好了。

3.无法计算线段的长度

在对线图层进行计算长度时,出现了这个错误:

通俗点讲,就是不支持对地理坐标系进行长度和面积计算。那么不能对地理坐标系进行长度和面积计算,可以对什么坐标进行长度和面积计算呢?答案是投影坐标系。地理坐标系,通俗点讲就是地面点在地球这个球面上的坐标,而球面是有弧度的,无法用尺子直接量算其长度。但是投影坐标,就是将球面投影到了一个平面上,把地球拍平了,虽然有长度损失,但是可以进行尺子量算了。

(1) 投影变换(失败了)
选择工具箱->数据管理->投影和变换->要素类->投影

打开投影对话框,选择要素类->输入坐标系->输出坐标系
如果没有填入转换参数的话(Geographic Transformation(optional)),会报如下错误:

(2) 数据重新导出(成功)
右键数据框->属性->选择坐标系统->选择一个投影坐标系(cgcs2000)

然后选择数据层,选择导出数据。

导出整个数据框,然后重新加载这个shp文件就可以了。

4.无法打断线

先贴几张图:
1.长度自动计算出来的是这个值。

2.自动分割出现零线段

3.打断线的时候,无法捕捉

这些问题的根本原因是因为图太小了,虽然通过放大工具,将图形放到到很大,可以看清楚的位置,但是实际上,它在地图上,占据了可能只有一个像素的位置。出现这种情况的原因是因为,我在进行地理校正之后,将无坐标系的图层叠加到了谷歌地图上,然后我需要为校正图层定义一个坐标系,通过ArcTooolBox的数据管理->投影和变换->定义坐标系,为图层定义了一个WGS84坐标系,结果,地图上就看不见这个图层了,理论上,我的操作是没有问题的,但是得不到我想要的效果,我给没有坐标系的图层定义了一个坐标系之后,理应改也会叠加到WGS84上。

没有办法,我换了一种方式,先定义了一个和谷歌地图相同的WGS84坐标系的空图层,然后将没有坐标系的图层中的所有元素,原封不动的复制到新的图层上,这样就解决了图层的坐标系问题,并且保留了原始的图形信息,主要是还可以和谷歌地图、天地图等地图进行叠加了。既然长度和坐标系都解决了,那么自然就能进行线的打断和捕捉了。

5.融合

对于多图幅的建筑物,要想让图层合并到一起,比如一个建筑物,就需要使用到融合工具。对于融合需要选择一个或者多个指定的属性字段,融合的要素必须具有相同的几何类型,可以简单理解为具有相同属性要素集合成一个要素集。融合后的属性字段仅输出融合前指定的。

比如上面的两个图形,因为图层分幅的原因,把一个建筑物,分成了两个建筑物,需要使用到数据管理->制图综合->融合工具进行融合

融合之后的图形就变成了一个整体了。这可能也不是我们需要的,还需要进行修改一下。

6.去除Z值

7.导出shp文件属性截断

从文件地理数据库导出图层到shp文件的时候,出现了字段属性被截取的情况,就是比如LX这个字段,原先是 “可利用地块”,后来导出之后,变成了 “可利用”,少了两个字。

这个问题暂时没有解决,后来我只能使用ArcPy脚本的形式访问GDB数据库,进行相关操作了。

8.ArcObject

(1) 在Desktop的安装包中,直接安装 ArcObject

(2) 在命令行中执行这句话,安装 arcobjects.jar,注意一定不要用 PowerShell,否则总是出现莫名其名的问题。

1
mvn install:install-file -Dfile="C:/Program Files (x86)/ArcGIS/Desktop10.2/java/lib/arcobjects.jar" -DgroupId=arcgis -DartifactId=arcobjects -Dversion=10.2 -Dpackaging=jar
参考文章:
1.Arcobject for java 开发环境配置(IDEA) 1.arcobjects.jar包添加到lib目录。2.添加依赖。3.安装 arcobjects.jar

问题

(1) java.lang.NoClassDefFoundError: com/esri/arcgis/geoprocessing/GPTool
我使用了上面的方法进行安装配置,结果还是出现了问题,真是郁闷死了。

参考文章:
1.
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。