20161017
1.可怜的我只能把在线地图功能屏蔽掉,因为在苹果电脑上问题提示brluetile什么找不到的错误,但在其它 电脑没问题。这个问题很长时间都没办法解决。但幸运的是,在服务器64位电脑下可以调出在线菜单,看来不仅仅是64位的问题啊。
2.测试了导入shp文件,非常强大,但还是偏移。纠偏了也有偏移。
3.今天实在是太忙了,还帮一个同事的嫂子做PPT,还是公益的,真的是太好心了。网上又有个叫中菜的人烦着我,真的是忙不过来,又接了个100元的远程挂机学习的业务。
2016.10.24
客户提供的arcgis导出的kml文件与原始数据shp竟然存在偏移,但客户说在arcgis中两个图层是重合的,而我这用dotspatial库读取的shp坐标与用自己写的解析Kml的模块得到的坐标竟然有偏移。和客户沟通了一下,没发现什么原因。判断肯定是arcgis导出kml时坐标或者投影投影什么不对。经过比对发现,shp和kml的坐标是固定的偏移量,于是在地图上20161017
1.可怜的我只能把在线地图功能屏蔽掉,因为在苹果电脑上问题提示brluetile什么找不到的错误,但在其它 电脑没问题。这个问题很长时间都没办法解决。但幸运的是,在服务器64位电脑下可以调出在线菜单,看来不仅仅是64位的问题啊。
2.测试了导入shp文件,非常强大,但还是偏移。纠偏了也有偏移。
3.今天实在是太忙了,还帮一个同事的嫂子做PPT,还是公益的,真的是太好心了。网上又有个叫中菜的人烦着我,真的是忙不过来,又接了个100元的远程挂机学习的业务。
2016.10.24
客户提供的arcgis导出的kml文件与原始数据shp竟然存在偏移,但客户说在arcgis中两个图层是重合的,而我这用dotspatial库读取的shp坐标与用自己写的解析Kml的模块得到的坐标竟然有偏移。和客户沟通了一下,没发现什么原因。判断肯定是arcgis导出kml时坐标或者投影投影什么不对。经过比对发现,shp和kml的坐标是固定的偏移量,于是在地图上找了一偏移量,再导入两个文件,果然完美的重合了。pll.Lng = lonlng[0]+0.000686645508;
pll.Lat = lonlng[1]+0.000164287524;
2.因为在某些电脑,无法正常导出点关联小班的数据excel表,客户要求导出的kml点能够再次导入到系统中,并且关联小班多边形数据。这其实就是一个判断点是否在多边形内的算法问题。于是在dotspatial中找到了一个类,这个类正好可以判断点是否在多边形内。关于如果在dotspatial中搜索这个类也有技巧的。由于dotspatial的代码量太多,又不是很熟悉,于是我搜索全部解决方案中的文本,搜索inpoly关键字,果然找到了一个类。这个类便是pointLocator类,然后里面就有LocateInPolygonRing方法,但这个是个私有方法,没法调用。如果要改成公有方法,再重新编译,工作量又太大了,并且我的dotspatial源码在苹果电脑中有错误无法编译。于是我又在这个类中找到了判断的关键函数:CgAlgorithms.IsPointInRing,这是一个public函数,直接调用就可以了。经过测试,可以找到点所在多边形的FID,但因为客户作图用的是我的系统kml模块导入的数据,而算法判断用的是shp读取的数据,因此得到的FID与系统中显示的点在多边形中的FID不一样。因此有了第一点中的纠偏方案。经过测试,可以得到正确的FID了。pll.Lat = lonlng[1]+0.000164287524;
2.因为在某些电脑,无法正常导出点关联小班的数据excel表,客户要求导出的kml点能够再次导入到系统中,并且关联小班多边形数据。这其实就是一个判断点是否在多边形内的算法问题。于是在dotspatial中找到了一个类,这个类正好可以判断点是否在多边形内。关于如果在dotspatial中搜索这个类也有技巧的。由于dotspatial的代码量太多,又不是很熟悉,于是我搜索全部解决方案中的文本,搜索inpoly关键字,果然找到了一个类。这个类便是pointLocator类,然后里面就有LocateInPolygonRing方法,但这个是个私有方法,没法调用。如果要改成公有方法,再重新编译,工作量又太大了,并且我的dotspatial源码在苹果电脑中有错误无法编译。于是我又在这个类中找到了判断的关键函数:CgAlgorithms.IsPointInRing,这是一个public函数,直接调用就可以了。经过测试,可以找到点所在多边形的FID,但因为客户作图用的是我的系统kml模块导入的数据,而算法判断用的是shp读取的数据,因此得到的FID与系统中显示的点在多边形中的FID不一样。因此有了第一点中的纠偏方案。经过测试,可以得到正确的FID了。