精华内容
下载资源
问答
  • 米转经纬度;经纬度算距离

    千次阅读 2018-11-10 10:45:18
    //米转地理距离度 private static double meterToDegree(double len){ double ra = Math.pow((Math.pow(len, -1)) * 111319.49079327358, -1); retrun ra; } /** * 通过经纬度获取距离(单位:米) * @param lat...

     

    //米转地理距离度
    private static double meterToDegree(double len){
        double ra = Math.pow((Math.pow(len, -1)) * 111319.49079327358, -1);
        retrun ra;
    }
    
    
    /**
     * 通过经纬度获取距离(单位:米)
     * @param lat1
     * @param lng1
     * @param lat2
     * @param lng2
     * @return 距离
     */
    private static double getDistance(double lat1, double lng1, double lat2,
        double lng2) {
        double EARTH_RADIUS = 6378.137;
        double radLat1 =lat1* Math.PI / 180.0;
        double radLat2 =lat2* Math.PI / 180.0;
        double radLng1 =lng1* Math.PI / 180.0;
        double radLng2 =lng2* Math.PI / 180.0;
        double a = radLat1 - radLat2;
        double b = radLng1 - radLng2;
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
            + Math.cos(radLat1) * Math.cos(radLat2)
            * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000d) / 10000d;
        s = s * 1000;
        return s;
    }
    
    
    
    //经纬度转web墨卡托
    function lonLat2WebMercator(lng,lat){
       var x = lon * 20037508.34 / 180;
       
       var ly = log(tan((90+lonLat.y)*PI/360))/(PI/180);
       var y =  ly *20037508.34/180; 
       var coords = [x,y];
       return coords;
    }
    
    //web墨卡托转经纬度
    function WebMercator2lonLat(x,y){
      var lng = x/20037508.34*180;
      var lata = y/20037508.34*180;
      var lat = 180/PI*(2*atan(exp(lata*PI/180))-PI/2);
      var lnlat = [lng,lat];
      return lnglat;
    }

     

    展开全文
  • 原文链接:https://blog.csdn.net/u011001084/article/details/52981802 原文链接:... //米转地理距离度 private static double meterToDegree(double len){ double ra...

    原文链接:https://blog.csdn.net/u011001084/article/details/52981802

    原文链接:https://blog.csdn.net/u010267336/article/details/83927232

    //米转地理距离度
    private static double meterToDegree(double len){
        double ra = Math.pow((Math.pow(len, -1)) * 111319.49079327358, -1);
        retrun ra;
    }
     
     
    /**
     * 通过经纬度获取距离(单位:米)
     * @param lat1
     * @param lng1
     * @param lat2
     * @param lng2
     * @return 距离
     */
    private static double getDistance(double lat1, double lng1, double lat2,
        double lng2) {
        double EARTH_RADIUS = 6378.137;
        double radLat1 =lat1* Math.PI / 180.0;
        double radLat2 =lat2* Math.PI / 180.0;
        double radLng1 =lng1* Math.PI / 180.0;
        double radLng2 =lng2* Math.PI / 180.0;
        double a = radLat1 - radLat2;
        double b = radLng1 - radLng2;
        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)
            + Math.cos(radLat1) * Math.cos(radLat2)
            * Math.pow(Math.sin(b / 2), 2)));
        s = s * EARTH_RADIUS;
        s = Math.round(s * 10000d) / 10000d;
        s = s * 1000;
        return s;
    }
     
     
     
    //经纬度转web墨卡托
    function lonLat2WebMercator(lng,lat){
       var x = lon * 20037508.34 / 180;
       
       var ly = log(tan((90+lonLat.y)*PI/360))/(PI/180);
       var y =  ly *20037508.34/180; 
       var coords = [x,y];
       return coords;
    }
     
    //web墨卡托转经纬度
    function WebMercator2lonLat(x,y){
      var lng = x/20037508.34*180;
      var lata = y/20037508.34*180;
      var lat = 180/PI*(2*atan(exp(lata*PI/180))-PI/2);
      var lnlat = [lng,lat];
      return lnglat;
    }

    展开全文
  • 平面投影坐标转经纬度坐标

    千次阅读 2017-12-20 22:08:25
    平面投影坐标转经纬度坐标 本人在进行开发时,使用geotools的GeoTiffReader类读取卫星影像的顶点坐标,得到的是平面坐标,单位是,打开arcGIS,加载影像,右下角会有坐标,在视图->数据框属性->常规->...

    平面投影坐标转经纬度坐标

    本人在进行开发时,使用geotools的GeoTiffReader类读取卫星影像的顶点坐标,得到的是平面坐标,单位是米,打开arcGIS,加载影像,右下角会有坐标,在视图->数据框属性->常规->单位,可以更改坐标显示单位,一开始默认单位是,我改成十进制度,如图:这里写图片描述
    现想将平面坐标转化为经纬度,在网上看到一片博客:经纬度坐标和投影坐标的转换。参考该代码写类自己的,我的目的正好与博客写的相反。然后我就参考geotools-17的用户文档(
    geotools/geotools-17.0-userguide/geotools-17.0/library/referencing/crs.html?highlight=transform
    现摘取部分文档():
    官方文档
    程序主要靠这俩方法:CRS.findMathTransform()方法定义转换的坐标系,JTS.transform()进行坐标的转换。

    package Test02;
    import org.geotools.coverage.grid.GridCoverage2D;
    import org.geotools.gce.geotiff.GeoTiffReader;
    import org.geotools.geometry.jts.JTS;
    import org.geotools.referencing.CRS;
    import org.geotools.referencing.crs.DefaultGeographicCRS;
    import org.opengis.geometry.MismatchedDimensionException;
    import org.opengis.referencing.FactoryException;
    import org.opengis.referencing.crs.CoordinateReferenceSystem;
    import org.opengis.referencing.operation.MathTransform;
    import org.opengis.referencing.operation.TransformException;
    
    import com.vividsolutions.jts.geom.Coordinate;
    import com.vividsolutions.jts.geom.GeometryFactory;
    import com.vividsolutions.jts.geom.Point;
    
    public class CoordinateConversion02 {
    
    	/**
    	 * 平面坐标转经纬度
    	 */
    	public static double[] convert(double x, double y,CoordinateReferenceSystem crs) 
                throws FactoryException, MismatchedDimensionException, TransformException {
    	Coordinate sourceCoord = new Coordinate(x, y);
        GeometryFactory geoFactory = new GeometryFactory();
        Point sourcePoint = geoFactory.createPoint(sourceCoord);
                
        MathTransform transform = CRS.findMathTransform(crs, DefaultGeographicCRS.WGS84, false);
        Point targetPoint = (Point) JTS.transform(sourcePoint, transform);
        double[] targetCoord = {targetPoint.getX(), targetPoint.getY()};
        return targetCoord;
    	}
    	/**
    	 * 测试
    	 */
    	public static void main( String[] args ) throws Exception
        {
            double x = -132202.486;
            double y = 1657014.274;
            //第一种获取方式,imageFile为卫星影像的文件地址,目的是获取影像的投影
    //        GeoTiffReader reader = new GeoTiffReader(imageFile);
    //        GridCoverage2D coverage = reader.read(null);
    //        //获取投影
    //        CoordinateReferenceSystem crs = coverage.getCoordinateReferenceSystem2D();
            //这是第二种获取方式(参考博文),
            final String wkt="PROJCS[\"unnamed\"," 
                                    +"GEOGCS[\"WGS 84\"," 
                                          + "DATUM[\"World Geodetic System 1984\", "
                                             +"SPHEROID[\"WGS 84\", 6378137.0, 298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]," 
                                            + "AUTHORITY[\"EPSG\",\"6326\"]], "
                                         +  "PRIMEM[\"Greenwich\", 0.0, AUTHORITY[\"EPSG\",\"8901\"]]," 
                                         + " UNIT[\"degree\", 0.017453292519943295], "
                                          + "AXIS[\"Geodetic longitude\", EAST], "
                                          +" AXIS[\"Geodetic latitude\", NORTH], "
                                          + "AUTHORITY[\"EPSG\",\"4326\"]], "
                                       + " PROJECTION[\"Albers_Conic_Equal_Area\"], "
                                       +  "PARAMETER[\"central_meridian\", 110.0], "
                                       + " PARAMETER[\"latitude_of_origin\", 12.0], "
                                        +" PARAMETER[\"standard_parallel_1\", 25.0], "
                                       +  "PARAMETER[\"false_easting\", 0.0], "
                                       +  "PARAMETER[\"false_northing\", 0.0]," 
                                        + "PARAMETER[\"standard_parallel_2\", 47.0]," 
                                        + "UNIT[\"m\", 1.0], "
                                        + "AXIS[\"Easting\", EAST], "
                                       +  "AXIS[\"Northing\", NORTH]]";
            CoordinateReferenceSystem crs = CRS.parseWKT(wkt);
            double[] coordinate = convert(x, y,crs);
            System.out.println("X: " + coordinate[0] + ", Y: " + coordinate[1]);
        }
    }
    ";
    

    好了,一切完成,用arcGIS进行检验正确。代码还不完整,不断更新中。
    更新(2018年1月1日):
    当我把这个类移植到另一台电脑上并添加 gt-geotiff-17.0.jar后,恩,就添加了这一个jar包没报错,运行时报错:Exception in thread “main” java.lang.NoClassDefFoundError: javax/media/jai/I。个人觉得这是jar包不全所致,解决办法是先删除全部的import* 引用,然后一个一个的添加jar包,jar包源码在GitHub上有,有的方法名不止一个jar包,这个需特别注意。

    本人原创,转载请附上本文连接。
    欢迎技术交流。

    展开全文
  • 测,其中content里面的geo,就是小区边界坐标集合。 3、获取小区边界坐标进行坐标转换 我们现在所获取到的小区边界坐标集合是百度的制坐标,现在需要将制坐标转换为经纬度。百度提供了BMAP_NORMAL_MAP....

    一、背景需求:

    在百度地图上查询一个住宅小区, 界面会显示一个小区的边界阴影。大小区、新小区有;一些老小区也没有。我们老大看到了让我也整一个出来,大概就是输入小区名称,地图上展示出这个小区的边界轮廓。
    要想展示边界轮廓,那么势必要获取小区的边界坐标。查遍百度地图api,只有获取行政区域轮廓图的方法。所以我采用抓包的方法,看了一下百度地图是怎么操作的。总结出了以下几个步骤。

    二、实现方法:

    1、获取小区的uid
    获取小区id有两种方法:
    a、根据抓包得到的百度获取小区uid的链接为:http://map.baidu.com/su?wd=金鹰国际城&cid=347&type=0&pc_ver=2,访问地址,得到结果:

    在这里插入图片描述
    其中s内的几个都是uid,取第一个bbb467bd96bc0a9ccac3db61
    b、通过百度提供的JS接口LocalSearch的Search方法搜索小区名称,返回LocalResult中包含POI的uid.

    在这里插入图片描述
    得到返回值pois:
    在这里插入图片描述
    取第一个得到uid:
    在这里插入图片描述
    2、根据小区uid获取小区信息
    通过Firefox的Httpfox插件抓包分析,与展示的小区范围相关的url串如下:
    在这里插入图片描述
    经测,其中content里面的geo,就是小区边界坐标集合。
    3、获取小区边界坐标进行坐标转换
    我们现在所获取到的小区边界坐标集合是百度的米制坐标,现在需要将米制坐标转换为经纬度。百度提供了BMAP_NORMAL_MAP.getProjection()。这个类里面的pointToLngLat(new BMap.Pixel(pos.lng, pos.lat));方法,可以将百度米制坐标转为经纬度。下面,我提供一个批量转换的方法,也就是直接可以把第二步获取的geo作为参数传进方法:

    在这里插入图片描述
    4、根据坐标集画多边形(小区边界轮廓)
    现在我们已经取到了小区边界坐标集合,调用百度api,根据坐标点画多边形就好啦~~~
    在这里插入图片描述

    三、源码

    <!DOCTYPE html>
    <html>
      <head>
        <title>test6.html</title>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
        <script type="text/javascript" src="jquery.min-1.11.3.js"></script>
        <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=你自己的密钥"></script>
      </head>
      
      <body>
        <div id="allmap" style="width:100%;height:600px;"></div>
        <div class="layout">
            <input id="value" value="淮海工学院东港学院-郁洲书院" type="text">
              <input type="submit" onclick="pd()" value="定位">
        </div>
      </body>
      <script type="text/javascript">
          //初始化地图
          var value='';
          var map = new BMap.Map("allmap");
          map.centerAndZoom('连云港市',10);
          map.enableScrollWheelZoom();
    
          //定位区域,小地名,使用本地检索方法
          var dw=function(){
              var local = new BMap.LocalSearch(map, {
                  renderOptions:{map: map}
              });
              local.setMarkersSetCallback(function(pois){
                  console.log(pois);
                  //清除所有覆盖物后,在叠加第一个点
                  map.clearOverlays();
                  for(var i=0;i<pois.length;i++){
                      var marker = new BMap.Marker(pois[i].point);
                      map.addOverlay(marker);
                  }
                  //根据获取到的poi id,查询边界坐标集合,画多边形
                  var uid = pois[0].uid;
                  queryUid(uid);
              })
              local.search(value);
              map.clearOverlays();
              
          }
          //获取小区信息
          function queryUid(uid){
              $.ajax({  
                    async: false,
                    url:"http://map.baidu.com/?pcevaname=pc4.1&qt=ext&ext_ver=new&l=12&uid="+uid,
                    dataType:'jsonp',  
                    jsonp:'callback',  
                    success:function(result) {  
                        content = result.content;
                        if(null!=content.geo && content.geo!=undefined){
                              var geo = content.geo;
                              var points = coordinateToPoints(geo);
                              //point分组,得到多边形的每一个点,画多边形
                              if (points && points.indexOf(";") >= 0) {
                                  points = points.split(";");
                              }
                              var arr=[];
                              for (var i=0;i<points.length-1;i++){
                                  var temp = points[i].split(",");
                                  arr.push(new BMap.Point(parseFloat(temp[0]),parseFloat(temp[1])));
                              }
                              var polygon = new BMap.Polygon(arr, {strokeColor:"blue", strokeWeight:2, strokeOpacity:0.5});  //创建多边形
                              map.addOverlay(polygon);   //增加多边形
                        }
                    },
                    timeout:3000
                }); 
          }
          //获取边界
          function getBoundary(){//获取边界       
          var bdary = new BMap.Boundary();
          bdary.get(value, function(rs){       //获取行政区域
              map.clearOverlays();        //清除地图覆盖物       
              var count = rs.boundaries.length; //行政区域的点有多少个
              for(var i = 0; i < count; i++){
                  var ply = new BMap.Polygon(rs.boundaries[i], {
                      strokeWeight: 1,
                      strokeColor: "#ff0000"
                  }); //建立多边形覆盖物
                  map.addOverlay(ply);  //添加覆盖物
                  map.setViewport(ply.getPath());    //调整视野         
                  }                
              });   
          }   
          //正则表达式,满足条件后调用
          var patter=/['省'|'市'|'区'|'县']$/;
          var pd=function(){
              value=document.getElementById('value').value;
              if(patter.test(value)==true){//关键字结尾是省市县区就调用下面方法
                  getBoundary();
                  if(/社区|小区$/.test(value)==true){//因为区后面结尾,会有小区和社区,即做了一个字方法
                      dw();
                  }
              }else{//关键字结尾没有省市县区结尾就调用此方法
                  dw();
              }
          }
          
          //坐标转换
          function coordinateToPoints(coordinate) { 
              console.log(coordinate);
            var points ="";
            if (coordinate) {
                var projection = BMAP_NORMAL_MAP.getProjection();
        
                if (coordinate && coordinate.indexOf("-") >= 0) {
                    coordinate = coordinate.split('-');
                }
                //取点集合
                var tempco = coordinate[1];
                if (tempco && tempco.indexOf(",") >= 0) {
                    tempco = tempco.replace(";","").split(",");
                }
                //分割点,两个一组,组成百度米制坐标
                var temppoints=[];
                for(var i = 0, len = tempco.length; i < len; i++){
                    var obj = new Object(); 
                    obj.lng=tempco[i];
                    obj.lat=tempco[i+1];
                    temppoints.push(obj);
                    i++;
                }
                //遍历米制坐标,转换为经纬度
                for ( var i = 0, len = temppoints.length; i < len; i++) {
                        //var pos = coordinate[i].split(',');
                        var pos = temppoints[i];
                        var point = projection.pointToLngLat(new BMap.Pixel(pos.lng, pos.lat));
                        points += ([ point.lng, point.lat ].toString() + ";");
                }
            }
            return points;
        }
      </script>
    </html>
    
    展开全文
  • 在获取poi数据的过程中,我们无论是调用api还是在...所以在进行这种poi点的获取,我建议使用爬虫在购房网站上进行爬取,然后地址为经纬度坐标,这里在房天下获取https://linfen.newhouse.fang.com/house/s/ ..
  •   基站定位是指手机发射基站根据与手机的距离来计算手机坐标地理位置的一种功能,...城市大概50到150,城郊大概100到300,乡村大概200到2000,偏远地区由于基站的密度太少,所以就会很差。   每个基站都有
  • x,y直角坐标系转经纬度WGS-84坐标系   坐标系的转换采用了白塞尔大地主题反算算法,需要指明x,y坐标系的中心点所对应的现实世界的经纬度,代码如下: //获取方位角 double getAngle(double x, double y) { double...
  • 墨卡托坐标转经纬度 //经纬度转墨卡托  public Vector2D lonLat2Mercator(Vector2D lonLat)  {  Vector2D mercator = new Vector2D();  double x = lonLat.X * 20037508.34 / 180;  double y = ...
  • SLAM学习 | 世界坐标系转经纬度误差分析 1 世界坐标系ENU和NED简介 2 ENU和经纬度的转换误差 概要: SLAM研究过程中常常使用 ENU (东、北、天)坐标系或 NED (北、东、地)坐标系作为绝对世界坐标系,...
  • 百度墨卡托平面坐标转经纬度坐标 发布时间:2015-08-31 以”钟楼”为例,在百度地图中搜索(结果如上图所示),返回的是12128773.43,4040249.00这种形式的坐标。这是什么坐标呢?这是墨卡托平面坐标...
  • 图31-1:我们至WGS-84坐标需要进行十进制的转化,也就是把度分秒换算为以度为单位的一串数字。操作步骤:打开excel>选中代表经度或纬度的列>选中工具窗口上的数据工具栏>分列功能键>选择固定列宽>...
  • If I have a latitude or longitude reading in standard NMEA format is there an easy way / formula to convert that reading to meters, which I can then implement in Java (J9)?Edit:Ok seems what I want to...
  • 'lat': 39.93757214936878}, 'precise': 0, 'confidence': 50, 'comprehension': 100, 'level': '商圈'}} 分析json数据,我们需要的内容应该是「result」中的「location」中的「lng(经度)」和「lat(纬度)」,...
  • 纬度每隔0.00001度,距离相差约1.1; 每隔0.0001度,距离相差约11; 每隔0.001度,距离相差约111; 每隔0.01度,距离相差约1113; 每隔0.1度,距离相差约11132。 转载于:...
  • 转换经纬度

    千次阅读 2016-02-27 16:14:29
    而标识位置信息的是经度和纬度。 那手机定位可以得知自己的经度和纬度,那如何计算出附近1公里的精度和纬度范围呢。 计算方法如下: 在经线上,相差一纬度约111km ,1公里就是 1/111 = 0.009度,这样就是1公里...
  • 投影转经纬度 private IPoint PRJtoGCS( double x, double y) { IPoint pPoint = new PointClass(); pPoint.PutCoords(x, y); ISpatialReferenceFactory pSRF = new SpatialReferenceEnvironmentClass(...
  • double &Z) 参数: L,B,Heith -- 地心坐标系下的经纬度坐标 单位:度 X,Y,Z -- 地心空间坐标系下的坐标 单位: 功能: WGS84经纬度转换为地心空间直角坐标 -----------------------------------------------------...
  • 转换为度(经纬度)

    千次阅读 2014-12-24 09:13:48
    var degree = 2*Math.PI*Math.cos(2*Math.PI/360*lat)*6378140/360; degree2 = (1/degree)*r;(r为距离)
  • //一对应的经度(东西方向)1M实际度 double longitude_per_mi = 360 / perimeter_latitude; double latitude_per_mi = 360 /perimeter; LogUtil.showLog("经度(东西方向)1M实际度","=="+ longitude_per_mi)...
  • 用这个工具可以转换坐标,但是不能换投影系统,比如可以2000平面2000经纬度,如果要2000平面84经纬度,需要输入转换参数。 方法2: 使用arcgis 的geometry project方法 分别输入输出坐标系和gemetry值 ...
  • 经度的定义是过某点的线面和本初子午面之间的夹角。纬度的定义是过某点的球面切面垂线与赤道平面之间的线面角。可见,如果不加限定,1"之间的距离没有意义。假设地球为一半径为R的表面光滑圆球体,表面上同一经...
  • /// 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度 /// /// 纬度 /// 经度 /// 半径() /// <returns></returns> public static double[] getCircleAround(double lon, double lat, ...
  • 纬度和经度的最大长度是多少?

    千次阅读 2020-08-15 13:30:59
    How long can latitude and longitude be? 经度和纬度能达到多长时间? I am getting very long lengths sent by a Wi
  • //地理坐标(弧度)转经纬度坐标 var point = [cartographic.longitude / Math.PI * 180, cartographic.latitude / Math.PI * 180]; if (!height) { height = 0; } if (!he) { he = 0; } if (!he2) { he2 = 0; } if...
  • } /// /// 根据提供的经度和纬度、以及半径,取得此半径内的最大最小经纬度 /// /// 纬度 /// 经度 /// 半径() /// public static double[] getCircleAround(double lon, double lat, double raidusMile) { ...
  • 经纬度坐标与距离的相互转换1.经纬度与距离角度的换算关系:2 Python代码实现 1.经纬度与距离角度的...纬度每隔0.00001度,距离相差约1.1; 每隔0.0001度,距离相差约11; 每隔0.001度,距离相差约111; 每隔0.0
  • * 即 百度 谷歌、高德 * @param bd_lon * @param bd_lat * @returns {*[]} */ function bd09togcj02(bd_lon, bd_lat) {  var x_pi = 3.14159265358979324 * 3000.0 / 180.0;  var x = bd_lon - 0.0065; ...

空空如也

空空如也

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

米转经纬度