【问题标题】:Convert Latitude / Longitude to Cartesian on Winkel Tripel projection在 Winkel Triplel 投影上将纬度/经度转换为笛卡尔坐标
【发布时间】:2013-02-07 09:08:06
【问题描述】:

我有一张 Winkel Tripel 地图,需要在上面放置标记。我给出了纬度/经度中标记的位置。所以我需要一种方法将其转换为 X,Y。

我找到了一些代码(如下),但是当我尝试它时,45º 对角线的图有一个适中的 s 曲线。所以这显然是不正确的。

任何帮助都会很棒。我在 PHP 中做这个,但我应该能够转换任何语言。

private function sinc($x){
    if($x == 0) return 1;
    return sin($x) / $x;
}

private function winkelTripelToCartesian($lat, $lng){
    $lat = deg2rad($lat);
    $lng = deg2rad($lng);

    $alpha = acos(cos($lat) * cos($lng / 2));

    $x = ($lng * M_2_PI + (2 * cos($lat) * sin($lng / 2)) / $this->sinc($alpha)) / 2;
    $y = ($lat + (sin($lat) / $this->sinc($alpha))) / 2;

    return array('x'=> strval($x), 'y' => strval($y));
}

【问题讨论】:

    标签: php graph maps cartesian map-projections


    【解决方案1】:

    地图投影试图将球体显示为 2D 对象,这会导致它改变形状的外观。这可能导致您的线路弯曲。

    如果您仍然不了解,这里有一个脚本,我使用 Javascript 在带有 winkel III 投影的地图上绘制标记:

      // latitudes/longitudes to radians
      var latRadian = (latitudes[i] * Math.PI) / 180;
      var lngRadian = (longitudes[e] * Math.PI) / 180;
      console.log("Radian Coordinates = " + latRadian + ", " + lngRadian);
    
      //Radians to xy cartesian coordinates
      var alpha = Math.acos( Math.cos(latRadian) * Math.cos( lngRadian / 2 ) );
      var phi_1 = Math.acos( 2 / Math.PI );
      function sinc(x) {
          if (x == 0) {
              return 1;
          } else {
              return (Math.sin(x)/x);
          }
      }
      var x = (svgHeight/Math.PI) * ( lngRadian * Math.cos(phi_1) + 2 * ( Math.cos(latRadian) * Math.sin(lngRadian/2) / sinc(alpha) ) ) / 2;
      var y = (svgHeight/Math.PI) * ( latRadian + ( Math.sin(latRadian) / sinc(alpha) )) / 2;
    

    您可以在此处找到完整示例:http://codepen.io/StinoM/pen/PZjYqw?editors=001

    这是我发现的一些使用 Ruby 的代码:https://gist.github.com/duncanbeevers/195554

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2020-07-04
      • 2015-09-30
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多