精华内容
下载资源
问答
  • 更好的方法是把成都用户筛选出来,把POI的坐标也提取出来,按城市进行计算。 3.HDFS存储 3.1 导出数据 simon_rsprice_chengdu导出脚本 spool /home/simon/simon_rsprice_chengdu.dat set ...

    1.Arcmap处理数据

    1.1 建立Map和GDB

    ·

    1.2 加载数据

    • 选择数据

    1

    • 选择坐标维度和坐标系统

    3

    接着会有个提示,直接点OK即可。

    然后会在图层里面出现一个原数据文件名 Events拼起来的图层。

    1.3加载地图

    添加矢量天地图
    4

    1.4 导出为点数据

    5

    1.5 过滤错误数据

    6

    1.6 将过滤后的数据保存为新图层

    7

    1.7 转换坐标系为3857

    8

    9

    1.8 IDW插值

    10

    11

    12

    13

    1.9 绘制渔网图Fishnet

    14

    15

    16

    1.10 Zonal Statistics As Table

    17

    1.11 用fishnet和Zonal Statistics进行关联,获取平均价格

    选中fishnet_3857_target图层,右键,Joins and Relates,然后选中Join

    18

    19

    20

    1.12 转换为4326坐标系

    使用Project工具,选择坐标系4326
    21

    1.13 4326坐标系的fishnet图层增加行列属性,并赋值

    • 4326坐标系的fishnet图层增加行列属性:

    22

    • 行列赋值

    第一步,读取列数,找到最右下角的渔网格子,获取OID即可
    23

    第二步,赋值

    24

    25

    1.14 导入数据到数据库中

    26

    27

    2.Oracle加工

    2.1 计算每个渔网格长款对应的经纬度

    • 获取渔网的经纬度范围
      28

    纬度范围是:
    30.422475
    30.980535

    经度范围是:
    103.655354
    104.443625

    • 获取渔网格子的行和列数目
    select max(frow),max(fcol) from
    ss_dm.simon_house_price_chengdu;

    得到结果是:

    max(frow)max(fcol)
    288351

    可以算出:
    経度差:0.788271
    纬度差:0.55806

    一个格子的经度是:0.788271/351,为0.0022457863247863
    一个格子的纬度是:0.55806/288,为0.0019377083333333

    2.2 和Home POI关联,获取每个用户居住地的房价

    可以参考下面的语句

    create table simon_rsprice_chengdu nologging as
    select /*+parallel(a,8)*/
    a.user_id,
    b.meanprice
    from cip.homework_poi a,simon_house_price_chengdu b
    where a.province='081' and a.date_dt = date '2017-06-01'
    and ceil((a.top1_home_lon - 103.655354) / 0.0022457863247863) =b.fcol
    and ceil((a.top1_home_lat - 30.422475 ) / 0.0019377083333333) =b.frow;

    更好的方法是把成都用户筛选出来,把POI的坐标也提取出来,按城市进行计算。

    3.HDFS存储

    3.1 导出数据

    • simon_rsprice_chengdu导出脚本
    spool  /home/simon/simon_rsprice_chengdu.dat
    set pagesize 0
    set echo off;
    set heading off ;
    set termout off;
    set trimspool on;
    set feedback off ;
    set term off ;
    set termout off; 
    set serveroutput off;
    SET LINESIZE 2500;
    select a.user_id||'|'||a.meanPrice from simon_rsprice_chengdu a;
    spool off ;
    • 执行脚本命令
    #!/bin/bash
    source ~/.bash_profile
    START_TIME=`date +'%s'`
    sqlplus -s user/password@db<<EOF //注意用户名密码
    @/home/simon/spool.sql
    EOF
    END_TIME=`date +'%s'`
    DURATION=`expr "$END_TIME" - "$START_TIME"`
    echo $DURATION

    3.2 上传到HDFS目录

    HDFS目录为:

    /user/simon/spendingpower/basicinfo/rsprice/csv_1_0/chengdu
    展开全文
  • 2.经纬度和地址逆转码; 3.点标记maker及涟漪动画; 4.热力图; 项目开发 外部文件引入 <link rel="stylesheet" href="css/common.css"> <link rel="stylesheet" href=...

    在这里插入图片描述

    需求说明

    1.公交线路规划(左键点选起点,右键点选终点);
    2.经纬度和地址逆转码;
    3.点标记maker及涟漪动画;
    4.热力图;

    项目开发

    外部文件引入

        <link rel="stylesheet" href="css/common.css">
        <
    展开全文
  • [cpp] view plain copy //经纬度转Wev墨卡托 dvec3 CMathEngine::lonLat2WebMercator(dvec3 lonLat) { dvec3 mercator; double x = lonLat.x *20037508.34/180; double y = log(tan((90+lonLat.y)...

    转载至https://blog.csdn.net/zhonghuart/article/details/77934693

    百度地图小区边界(轮廓)处理

    最近,查了很多资料都没法在百度地图上画出小区边界,经过一番研究后,终于发现了一种方式。以下是demo的相关说明:

    1. demo中小区相关信息查询是基于jsonp的方式处理
    2. 使用百度地图需要申请AK,demo中使用的是我个人的申请的,如果demo打开没有效果可能是AK过期了
    3. 因为小区轮廓百度没有公布相关API,demo中的接口有可能被百度关闭
    4. 可能有的小区并没有相关轮廓数据,所以demo中也无法显示出来


    闲话不多说了,直接上代码

    1)JS代码(下变第一部分代码)

    2)HTML代码(下边第二部分代码)

    3)下载地址:http://pan.baidu.com/s/1qY2rAPI

    4)效果


    var queryHouseOutline = function(hid, callback){
        var baseURL = 'http://map.baidu.com/?reqflag=pcmap&coord_type=3&from=webmap&qt=ext&ext_ver=new&l=18';
        var url = baseURL + "&uid=" + hid;
        callback && (window.queryHouseOutlineCallback = callback);
        $.ajax({
            type: "get",
            async: false,
            url: url,
            dataType: "jsonp",
            jsonpCallback: "queryHouseOutlineCallback",
            success: function(datas) {
            }
        });
    };
     
    /**
     * 模糊查询小区信息, 无返回值
     * @param {} house    小区名称
     * @param {} city    所属城市名称
     * @param {} ak        百度地图AK
     * @param {} callback    回调函数,该函数可以接收到请求的返回值
     */
    var queryHouse = function(house, city, ak, callback){
        var baseURL = 'http://api.map.baidu.com/place/v2/search?output=json&scope=2';
        var url = baseURL + "&q=" + house + "&region=" + city + "&ak=" + ak;
        callback && (window.queryHouseCallback = callback);
        $.ajax({
            type: "get",
            async: false,
            url: url,
            dataType: "jsonp",
            jsonpCallback: "queryHouseCallback",
            success: function(datas) {
            }
        });
    };
     
    /**
     * 墨卡托坐标转百度坐标
     * @param {} coordinate
     * @return {}
     */
    var coordinateToPoints = function(map, coordinate) {
        var points = [];
        if (coordinate) {
            var arr = coordinate.split(";");
            if(arr){
                for(var i = 0; i < arr.length; i++){
                    var coord = arr[i].split(",");
                    if(coord && coord.length == 2){
                        var mctXY = new BMap.Pixel(coord[0], coord[1]);    
                        var project = map.getMapType().getProjection();
                        var point = project.pointToLngLat(mctXY);   
                        points.push(new BMap.Point(point.lng, point.lat));
                    }
                }
            }
        }
        return points;
    };
    /**
     * 墨卡托坐标解析
     * @param {} mocator
     * @return {}
     */
    var parseGeo = function(mocator){
        if(typeof mocator != 'string'){
            return {};
        }
        var t = mocator.split("|");
        var n = parseInt(t[0]);
        var i = t[1];
        var r = t[2];
        var o = r.split(";");
        if(n === 4){
            for (var a = [], s = 0; s < o.length - 1; s++){
                "1" === o[s].split("-")[0] && a.push(o[s].split("-")[1]);
            }
            o = a;
            o.push("");
        }
        var u = [];
        switch(n){
            case 1:
                u.push(o[0]);
                break;
            case 2:
            case 3:
            case 4:
                for (var s = 0; s < o.length - 1; s++) {
                    var l = o[s];
                    if (l.length > 100){
                        l = l.replace(/(-?[1-9]\d*\.\d*|-?0\.\d*[1-9]\d*|-?0?\.0+|0|-?[1-9]\d*),(-?[1-9]\d*\.\d*|-?0\.\d*[1-9]\d*|-?0?\.0+|0|-?[1-9]\d*)(,)/g,
                                        "$1,$2;");
                        u.push(l);
                    } else {
                        for (var c = [], d = l.split(","), f = 0; f < d.length; f += 2) {
                            var p = d[f];
                            var h = d[f + 1];
                            c.push(p + "," + h);
                        }
                        u.push(c.join(";"))
                    }
                }
                break;
            default:
                break;
        }
        
        if(u.length <= 1){
            u = u.toString();
        }
        
        var result = {
            type : n,
            bound : i,
            points : u
        };
        return result;
    };

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>地图DEMO</title>
    <script type="text/javascript"
        src="http://api.map.baidu.com/api?v=2.0&ak=E1ec599cbc4a8006eb37d99cf002e054"></script>
    <script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
    <script type="text/javascript" src="js/equipmentMapUtil.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            var map = new BMap.Map("allmap"); // 创建Map实例
            map.centerAndZoom("深圳", 15);
            map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
     
            var options = {
                renderOptions : {
                    map : map,
                    selectFirstResult : true
                },
                onSearchComplete : function(results) {
                    //这个函数会被调用两次
                }
            };
     
            map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
            
            /**
             * 第一个参数是城市名,第二参数是小区名 
             */
            var showArea = function(city, area){
                queryHouse(area, city, "E1ec599cbc4a8006eb37d99cf002e054", function(data){
                    if(data.message == 'ok'){
                        var houses = data.results;
                        if(houses && houses.length > 0){
                            var house = houses[0];
                            queryHouseOutline(house.uid, function(houseOutline){
                                var geo = houseOutline.content.geo;
                                if(!geo){
                                    var location = house.location;
                                    var point = new BMap.Point(location.lng, location.lat);
                                    map.centerAndZoom(point, 19);
                                    var marker = new BMap.Marker(point);
                                    marker.setAnimation(BMAP_ANIMATION_BOUNCE); 
                                    map.addOverlay(marker);
                                }else{
                                    map.clearOverlays();
                                    var geoObj = parseGeo(geo);
                                    //var bounds = coordinateToPoints(geoObj.bound);
                                    //边界点
                                    var points = coordinateToPoints(map, geoObj.points);
                                    var ply = new BMap.Polygon(points, {
                                        strokeWeight: 2,
                                        strokeColor: "#F01B2D",
                                        strokeOpacity: 0.9,
                                        fillColor : "#FFEBCC"
                                    }); //建立多边形覆盖物
                                    map.addOverlay(ply); //添加覆盖物
                                    map.setViewport(ply.getPath()); //调整视野 
                                }
                            });
                        }
                    }
                });
            };
            
            showArea($('#cityId').val(), $('#areaId').val());
            
            $('#showBtn').click(function(){
                debugger;
                showArea($('#cityId').val(), $('#areaId').val());
            });
        });
    </script>
    </head>
    <body>
        <table>
            <tr>
                <td>城市:</td>
                <td><input id="cityId" type="text" value="深圳" /></td>
                <td>小区:</td>
                <td><input id="areaId" type="text" value="南方科技大学" /></td>
                <td>
                    <button id="showBtn">显示</button>
                </td>
            </tr>
        </table>
        <div id="allmap" style="width: 600px; height: 480px;"></div>
        <script type="text/javascript">
            
        </script>
    </body>
    </html>

    =============================================================================

    WGS84、Web墨卡托、火星坐标、百度坐标互转

    转自:
    1、http://blog.csdn.net/wildboy2001/article/details/12031351

    2、http://kongxz.com/2013/10/wgs-cgj/

    3、http://www.oschina.net/code/snippet_260395_39205

     


    经过笔者测试,与Google map dowloader软件系列的转换器相比,在14级别的某地图上测试有0.04个像素误差,基本可以无视。

     

    其他级别和经纬区域有待测试。

    原帖地址:http://www.gisall.com/html/68/104468-4865.html

     

    将度换算成度分秒=INT(B2)&"/"&INT(MOD(B2*60,60))&"/"&INT(MOD(B2*3600,60))&""

    ===================================================================

     

    在线JavaScript环境

     

    一些网站中提供了在线的JavaScript编程环境,可用于直接在线联系JavaScript.著名的在线编辑环境包括:

    JSbin 菜鸟工具 W3School

     

    进一步,如果你要在线练习TypeScript:

     

     

    • 菜鸟工具
    • 官方PlayGround
    • ==============================================================================
    • 福州高新区海西园
    • function parseGeo(mocator){
          if(typeof mocator != 'string'){
              return {};
          }
          var t = mocator.split("|");
          var n = parseInt(t[0]);
          var i = t[1];
          var r = t[2];
          var o = r.split(";");
          if(n === 4){
              for (var a = [], s = 0; s < o.length - 1; s++){
                  "1" === o[s].split("-")[0] && a.push(o[s].split("-")[1]);
              }
              o = a;
              o.push("");
          }
          var u = [];
          switch(n){
              case 1:
                  u.push(o[0]);
                  break;
              case 2:
              case 3:
              case 4:
                  for (var s = 0; s < o.length - 1; s++) {
                      var l = o[s];
                      if (l.length > 100){
                          l = l.replace(/(-?[1-9]\d*\.\d*|-?0\.\d*[1-9]\d*|-?0?\.0+|0|-?[1-9]\d*),(-?[1-9]\d*\.\d*|-?0\.\d*[1-9]\d*|-?0?\.0+|0|-?[1-9]\d*)(,)/g,
                                          "$1,$2;");
                          u.push(l);
                      } else {
                          for (var c = [], d = l.split(","), f = 0; f < d.length; f += 2) {
                              var p = d[f];
                              var h = d[f + 1];
                              c.push(p + "," + h);
                          }
                          u.push(c.join(";"))
                      }
                  }
                  break;
              default:
                  break;
          }
          
          if(u.length <= 1){
              u = u.toString();
          }
          
          var result = {
              type : n,
              bound : i,
              points : u
          };
          return result;
      }


      function mocator2WGS84(coordinate) {
          var points = [];
          if (coordinate) {
              var arr = coordinate.split(";");
              if(arr){
                  for(var i = 0; i < arr.length; i++){
                      var coord = arr[i].split(",");
                      if(coord && coord.length == 2){
                          var x = coord[0]/20037508.34*180;  
                          var y = coord[1]/20037508.34*180;  
                          y= 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);  

                          points.push(new Array(x,y));
                      }
                  }
              }
          }
          return points;
      }

      var a = parseGeo("4|13271102.86,2985165.68;13271655.86,2985840.67|1-13271401.86,2985177.68,13271454.86,2985165.68,13271642.86,2985215.68,13271655.86,2985236.68,13271576.86,2985392.68,13271555.86,2985417.68,13271459.86,2985656.68,13271412.86,2985822.67,13271388.86,2985840.67,13271112.86,2985770.68,13271102.86,2985724.68,13271401.86,2985177.68;");
      console.log(a);
      gps_coor = mocator2WGS84(a.points);
      console.log(gps_coor)

    展开全文
  • 使用高德地图对数据进行地理编码 高德地图POI服务:...输出:POI信息,具有经纬度,坐标系WGS84 若没有搜索到,该条后面的信息是空的 最后一行输出失败的数量 coordin...

    使用高德地图对数据进行地理编码
    高德地图POI服务:http://lbs.amap.com/api/webservice/guide/api/search

    输入:上市公司数据,没有经纬度
    这里写图片描述

    功能:按照name,area查询,获取公司的经纬度

    输出:POI信息,具有经纬度,坐标系WGS84
    这里写图片描述
    若没有搜索到,该条后面的信息是空的
    最后一行输出失败的数量
    这里写图片描述

    coordinate_conversion文件:https://blog.csdn.net/summer_dew/article/details/80723434

    # -*- coding:utf-8 -*-
    # function: 根据一些信息查找经纬度
    import xlwt
    import xlrd
    import urllib
    from bs4 import BeautifulSoup
    import coordinate_conversion
    
    
    
    NAME = u"地理编码" #输出的名称
    input_path = r'D:\Users\PasserQi\Desktop\GetAMapPOI\stock_basic_list.xls'
    outPath = r"D:\Users\PasserQi\Desktop\GetAMapPOI\%s.xls" % NAME
    
    saveField = ["查询条件","id","name","type","typecode","address","x","y","tel","pname","cityname","adname","business_area","photos"]
    AMAP_API_KEY = "4f*****1c7" #高德地图密匙
    
    # @Fun:获取查找的条件
    # @Param:xls文件全路径
    # @Return:[{}, {}, {}, ..] 查找的信息Items
    def getItems(input_path):
        items = []
        word = xlrd.open_workbook(input_path)
        table = word.sheets()[0]
        nrows = table.nrows
        for i in range(1,nrows):
            items.append({
                "keywords" : table.cell(i,1).value,
                "name" : table.cell(i,3).value,
                "type" : table.cell(i,2).value
            })
    
        return items
    
    # 将查找条件输出字符串
    def itemToStr(item):
        ret = ""
        for key in item:
            ret += key +":" + item[key] + "\n"
        return ret
    
    
    # 填写查询条件
    # @param:一个查询条件
    # @return:POI
    def searchLocation(item):
        urlParamJson = {
            'city': item["name"].encode("utf8"),
            'output': 'xml',
            'key': AMAP_API_KEY,
            'keywords': item["keywords"].encode("utf8") ,
            "types": "公司",
            'citylimit': 'true',  # 只返回指定城市数据
            'offset': '20'  # 每页条数
        }
        params = urllib.urlencode(urlParamJson)
        url = "http://restapi.amap.com/v3/place/text?%s" % params
        print url
        http = urllib.urlopen(url)
        dom = BeautifulSoup(http)
        poiList = dom.findAll("poi")
        if len(poiList) == 0:  # 没有
            return None
        else:
            return poiList[0]
    
    
    if __name__ == '__main__':
    	# 获取查找条件
        items = getItems(input_path)
    
        #创建保存的xls
        w = xlwt.Workbook(encoding="utf-8")
        #create sheet
        sheet = w.add_sheet(NAME)
        for i in range( len(saveField) ) :
            sheet.write(0, i, saveField[i])
    
        cur = 1
        error = 0
        # 开始查找
        for item in items:
            poi = searchLocation(item)
            index = saveField.index("查询条件")  # 获取下标
            value = itemToStr(item)
            sheet.write(cur, index, value)  # 保存
    		# 没有搜索到,退出本次
            if not poi:
                cur += 1
                error +=1 # 记录未搜索到的
                continue
    
            # 保存
            for tag in poi:
                name = tag.name  # 标签名
                if name == "photos":  # 图片
                    index = saveField.index("photos")
                    value = ""
                    for i in tag:
                        photos_url = tag.url.get_text()
                        value = value + photos_url + ";"
                    sheet.write(cur, index, value)
                    continue
                if name in saveField:
                    index = saveField.index(name)  # 获取下标
                    value = tag.get_text()  # 获取值
                    sheet.write(cur, index, value)  # 保存
                if name == "location":
                    value = tag.get_text()
                    x, y = value.split(',')
                    x, y = coordinate_conversion.gcj02towgs84(float(x), float(y))
                    # save x
                    index = saveField.index('x')
                    value = x
                    sheet.write(cur, index, value)
                    # save y
                    index = saveField.index('y')
                    value = y
                    sheet.write(cur, index, value)
            cur += 1
            print cur
    
        sheet.write(cur, 0, "失败" + str(error) )
        w.save(outPath)
    
    展开全文
  • poi = poi.substring(0, len - 1 ); 15 len-- ; 16 for ( var i = 0; i ; i++ ) { 17 hash = parseInt(poi.charAt(i), _options.settings.cha) - _options.settings.add; 18 if (hash >= _...
  • poi简单描绘的经纬度坐标点
  • Hive UDF根据经纬度获取百度POI数据 有关百度poi资料: 零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(基础篇) import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import ...
  • 通过某位置的经纬度获取周边百度地图POI的信息: 根据地图上任意一点的经纬度获取周边最近的POI位置信息 //启用滚轮缩放 var map= new BMap.Map("container"); var mPoint= new BMap.Point(104....
  • 因前端展示需要,同时用到了高德地图和百度地图,而数据库中存储的是高德地图采集的POI经纬度,前端需要在不同的页面,或是用高德地图展示,或是用百度地图展示。于是,借用强大的百度一下,搜索到对应的转换公式,...
  • javascript墨卡托经纬度互转

    千次阅读 2017-12-11 14:26:23
    墨卡托投影是荷兰地理学家墨卡托于1569年提出的一种地球投影方法,该方法是圆柱投影的... * @param poi 经纬度 * @returns {{}} * @private */ function _getMercator(poi) {//[114.32894, 30.585748] var mer
  • var map = new AMap. Map ( 'mp1' ,{ zoom : ....poi.adcode);....poi.name);....poi.location.lng) gps. push ( e .poi.location.lat) this .Gps = gps console. log ( this .Gps) }); });
  • 写在前面 目前高德的边界没法批量爬取,不过可以采用...为了方便大家,不用再为安装环境,以及运行报错等问题困扰,目前已经将POI数据爬取做成一个在线公开的数工具,地址奉上: http://www.mapboxx.cn/tool/po...
  • 常州市武进区全类别POI-shp文件(wgs84经纬度坐标)-若非地面建筑含层数,若为停车场含停车场类别
  • 在高德地图的应用中,地图上总少不了搜索框,用于搜索并定位某一位置,并获取某一定位点的经纬度,类似于这种: 这种搜索方法一般是高德地图的输入提示插件AMap.Autocomplete和POI搜索插件AMap.PlaceSearch结合来...
  • GaoDeMapPoi 通过搜索POI项,例如:学校、酒店、立交桥等,获取相应的高德POI数据。此代码获取了POI的名称、地址、电话顿号经纬度信息,可根据自己需要进行扩展。
  • 分析:在网上找了很多方法: ... ...,该方法不可用,貌似服务已经关闭  ...小结:因为以上方法都是在有网的情况下进行处理,所以从BDAbstractLocationListener中获取城市Poi信息是成立的,避免绕弯路。
  • 武汉市购物服务poi数据2020年wsgs84坐标.xlsx
  • line-height:16px">' + poi.address + poi.point.lng+','+poi.point.lat+' </td>'); infoWindowHtml.push('</tr>'); infoWindowHtml.push('</tbody></table>'); var infoWindow = new BMap.InfoWindow...
  • title: poi.address+poi.latLng }); var decor = new soso.maps.MarkerDecoration({ content: i+1, margin: new soso.maps.Size(0, -4), align: soso.maps.ALIGN.CENTER, marker: marker }); markers....
  • 根据地图上任意一点的经纬度获取周边最近的POI位置信息  //启用滚轮缩放  var map= new BMap.Map("container");  var mPoint= new BMap.Point(104.0831760000, 30.6608250000);  map....
  • 一、爬取高德POI数据(高德开放平台接口+Python) 参考原文博客 https://blog.csdn.net/hxx099/article/details/88974264 1、申请高德开放平台的数据接口 1)申请高德地图API账号 https://lbs.amap.com/dev/key 登录...
  •  * @abstract 从POI的百度经纬度生成POI的谷歌经纬度 BD-09转化为GCJ-02(谷歌、高德、腾讯)  * @author zhangyi  * @date 2014/08/01  */ $rootPath = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'; ...
  • var str = " 地址:" + address + "  电话:" + tel + "  类型:" + type+"  经纬度:"+location; return str; } function openMarkerTipById1(pointid, thiss) { //根据id 打开搜索结果点tip...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,615
精华内容 1,846
关键字:

poi经纬度