爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13460|回复: 17

[底图] Surfer从百度地图获取百度坐标的高精度边界文件

[复制链接]

新浪微博达人勋

发表于 2017-8-25 15:05:44 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
之前我绘制surfer都是从百度截取一个底图手工制作的边界文件,然后在底图的基础上获取自动站的坐标数据,效果还算可以。如下:
anshan0739.png

缺点是精度不高,而且费时间。为了方便获取高精度的坐标边界文件。我编写了一个小的程序来获取百度的经纬度坐标。主要页面代码如下:
<script type="text/javascript">
        var ps= new Array();
    var cityname = decodeURI(getUrlParam('name'));
        // 百度地图API功能
        var map = new BMap.Map("content");
        map.centerAndZoom(new BMap.Point(116.403765, 39.914850), 5);
        map.enableScrollWheelZoom();
        function getBoundary(){      
                var bdary = new BMap.Boundary();
                bdary.get(cityname, function(rs){       //获取行政区域
                        map.clearOverlays();        //清除地图覆盖物      
                        var count = rs.boundaries.length; //行政区域的点有多少个
                        if (count === 0) {
                                alert('未能获取当前输入行政区域');
                                return ;
                        }
                  var pointArray = [];
                        for (var i = 0; i < count; i++) {
                                var ply = new BMap.Polygon(rs.boundaries, {strokeWeight: 2, strokeColor: "#ff0000"}); //建立多边形覆盖物
                                map.addOverlay(ply);  //添加覆盖物
                                pointArray = pointArray.concat(ply.getPath());
                        }   
                        var points = rs.boundaries[0];
                        ps= points.split(";");
                        map.setViewport(pointArray);    //调整视野  
                        $("#zb").append(ps.length+",0<br/>");
                        for (i=0;i<ps.length ;i++ )
                        {
                                 $("#zb").append(ps+"<br/>");
                        }
                });
               
               
        }
       
        getBoundary();
               
        function getUrlParam(paras) {
            var url = location.href;
            var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
            var paraObj = {};
            for (var i = 0; j = paraString; i++) {
                paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j
                        .indexOf("=") + 1, j.length);
            }
            var returnValue = paraObj[paras.toLowerCase()];
            if (typeof (returnValue) == "undefined") {
                return "";
            } else {
                return returnValue;
            }
        }

</script>

页面效果如下:右侧的数据是不是很熟悉,是的,就是边界文件里面的数据。将这些数据放到一个文本文件里然后存储为.bln文件就是边界文件了。这个边界文件是根据实际的百度经纬度坐标制作的,但是百度坐标与实际的GPS坐标是有偏差的原因如下
国际经纬度坐标标准为WGS-84,国内必须至少使用国测局制定的GCJ-02,对地理位置进行首次加密。百度坐标在此基础上,进行了BD-09二次加密措施,更加保护了个人隐私。百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。
具体怎么转换在这里不介绍了,百度找一下吧。


所以大家需要把自动站的经纬度坐标转换成百度的坐标。
2.png


边界文件生成的surfer底图如下:
4.png



为了方便大家获取边界的数据文件,我写了个 小程序,部署在云服务器,大家可以使用。

http://123.206.86.164/getboundary/1.jsp


页面如下操作步骤:
11.png 22.png 33.png




密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-26 10:09:10 | 显示全部楼层
本帖最后由 chengxf 于 2017-8-26 12:20 编辑

我很是搞不明白,为什么一个坐标要加密再加密,用的时候解密再解密。这样就可以“保护”隐私?
加密的方法是你确定的,解密的途径你也公开告诉了人家,这就保护了隐私?搞不懂为什么要做这样脱裤子放屁的事情,此地无银三百两。
对于我们不明就里的百姓而言,不知道从百度地图上得到的坐标是“伪”的,你对百姓欺骗获得成功。
对于“间谍”级的人物,你那点加密,他就用你告诉的解密手段立刻将它破解了,没费一点脑筋和功夫,计算机替他做的。我就不知道你的成就感在哪里。
密码修改失败请联系微信:mofangbao
回复 支持 2 反对 0

使用道具 举报

新浪微博达人勋

发表于 2017-8-25 18:43:10 | 显示全部楼层
好,以前2015.10看到一个帖子,也是异曲同工:
2017-08-25_18-44-56.jpg


程序是这个:
边界坐标获取.htm (3.14 KB, 下载次数: 35)
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2017-8-25 15:51:27 | 显示全部楼层
获取坐标之后怎么再做成底图?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-25 15:52:37 | 显示全部楼层
谢谢分享,非常有用
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-25 16:03:30 | 显示全部楼层
搞出来了...谢谢啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-25 17:08:06 | 显示全部楼层
百度对外接口的坐标系并不是GPS采集的真实经纬度,需要通过坐标转换接口进行转换。——对此很困惑,这个问题具体该如何处理?烦请老师还是讲解一下!(或者给几个链接吧)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-26 10:44:22 | 显示全部楼层
百度的是墨卡托投影你需要转换下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-8-31 08:31:41 | 显示全部楼层
百度的是墨卡托投影
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-1 07:56:42 | 显示全部楼层
:还加密吗?
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表