GIS | 自己编的一些面试题(答案)

1
分享 2017-01-25
题目在这里

Q1:根据这个数据能看出什么信息?
A1: 两个闭合的三角形组成的多部件几何(无法判断是线还是多边形,多边形的概率较大),纬度写在经度前(来源于谷歌或传统测绘的概率较大),第一个三角形是逆时针的大概位于中国,第二个三角形是顺时针的大概位于美国。

Q2:如果在Excel中有许多行这样的数据,如何能显示到ArcGIS中?需要注意哪些问题?
A2: 改造成某种比较通用的格式,然后使用ArcGIS的工具或接口转换或加载。常见的如CSV中带有x,y字段数据可以容易的加载成点数据显示,但这个数据是多部件的线或面,因此需要GIS的专用格式,如esri JSON(GeoJson与ArcGIS兼容还需要额外转换),或WKT。大多数格式不需要点序,度分秒需要转成度,分号需要改逗号。具体方法可以用GP工具(JSON To Features),或ArcPy函数(FromWKT),也可通过ArcGIS的客户端API显示,如:Runtime SDK,JS API,AO等。esri json格式:

{"rings" : [ [ [-97.06138,32.837], [-97.06133,32.836], [-97.06124,32.834], [-97.06127,32.832], [-97.06138,32.837] ], [ [-97.06326,32.759], [-97.06298,32.755], [-97.06153,32.749], [-97.06326,32.759] ]],"spatialReference" : {"wkid" : 4326}}



WKT格式:

MULTIPOLYGON(((1 1,5 1,5 5,1 5,1 1),(2 2,2 3,3 3,3 2,2 2)),((6 3,9 2,9 4,6 3)))



 
Q3:卷帘工具(Swipe Tool)怎么实现?
A3:这个问题,可能是所谓二次开发的分水岭,当然用AO也可以实现,它的接口实在太丰富了。实现这个功能需要对于缓存和绘图有更深一层的理解,可以扒一扒已经实现的类库进去看看。简单说应是在点击这个按钮时,针对不显示目标图层的情况创建缓存(其它图层数据量较大时可明显感觉延迟);而当前显示的地图则是针对显示目标图层的情况,应该早已创建过缓存,如果没有则也需要创建。在鼠标点击并移动时,仅仅是将两个缓存按鼠标的位置进行拼接并显示到屏幕,基本等同于对两张屏幕大小的图片进行拼接操作,因此效率很高。

Q4:关于高斯克吕格投影的一个问题
A4:先看107那个数据,坐标数值和坐标系的东向偏移参数明显不符,因此是坐标系定义错了,应该是有带号的,但现在用的是没带号的。通过带号37和中央经线111可以基本确定是选择3度分带。再看106那个数据没定义坐标系,从数值看像是没有代号的GK投影,但中央经线无法直接确定。由于原本这俩数据相邻,投影用的中央经线通常是一样的,坐标值也应该是临近的。但107的X值去掉带号之后比106的X值小了近3百公里,两个相临县的距离不会有这么大,因此这俩数值可能是有问题的。相差过大的情况最容易犯的错误应该是中央经线选错了,而且很巧3百公里的差距很接近一个三度带的最大差值。这俩数值与5百公里的差值按说都在合理的范围内,但如果是3度分带,赤道上的最大差值应该在166公里左右,对于中国的纬度来说,106的数据过大了些。因此初步猜测是106的数据在最初投影时选错了中央经线,少了3度,后来又丢失去了坐标系定义文件。如果这时知道两个县的大致经纬度坐标,通过分带情况就可以做出更准确的判断。
解决就很容易了:先为107的数据定义有带号的坐标系Xian_1980_3_Degree_GK_Zone_37,再为106的数据定义当初用错的那个坐标系Xian_1980_3_Degree_GK_CM_108E然后直接加到ArcMap中,动态投影发现吻合的很好。如果想改正数据,就再将他们分别投到同一个坐标系,可以是Xian_1980,也可以是Xian_1980_3_Degree_GK_Zone_37或Xian_1980_3_Degree_GK_CM_111E
这个题有点像逻辑推理题,我的逻辑是否严密也不是很确定,甚至有些侥幸,但确实是真实的问题,我非常喜欢。
 

文章来源:http://www.jianshu.com/p/0931d4de59a3

0 个评论

要回复文章请先登录注册