C#实现墨卡托投影坐标系经纬度与米制单位之间的互转
using System;
using GeoJSON.Net.Geometry; namespace GISWebService.Common
{
/// <summary>
/// 墨卡托坐标转换(经纬度与米之间互转)
/// </summary>
public class MercatorCoordinatesConverter
{
/// <summary>
/// 经纬度转Web墨卡托(单位:米)
/// </summary>
/// <param name="longitude">经度</param>
/// <param name="latitude">纬度</param>
/// <returns>转换后的位置</returns>
public static Position Degree2WebMercatorMeter(double longitude, double latitude)
{
var xValue = longitude * 20037508.34 / ;
var y = Math.Log(Math.Tan(( + latitude) * Math.PI / )) / (Math.PI / );
var yValue = y * 20037508.34 / ;
return new Position(xValue, yValue);
} /// <summary>
/// 经纬度转World墨卡托(单位:米)
/// </summary>
/// <param name="longitude">经度</param>
/// <param name="latitude">纬度</param>
/// <returns>转换后的位置</returns>
public static Position Degree2WorldMercatorMeter(double longitude, double latitude)
{
const int radius = ;
const double minorRadius = 6356752.314245179; const double d = Math.PI / ;
const double r = radius;
var y = latitude * d;
const double tmp = minorRadius / r;
double e = Math.Sqrt( - tmp * tmp),
con = e * Math.Sin(y); var ts = Math.Tan(Math.PI / - y / ) / Math.Pow(( - con) / ( + con), e / );
y = -r * Math.Log(Math.Max(ts, 1E-)); var xValue = longitude * d * r;
var yValue = y; return new Position(xValue, yValue);
} /// <summary>
/// Web墨卡托转经纬度
/// </summary>
/// <param name="x">X坐标值(单位:米)</param>
/// <param name="y">Y坐标值(单位:米)</param>
/// <returns>转换后的位置</returns>
public static Position WebMercatorMeter2Degree(double x, double y)
{
var xValue = x / 20037508.34 * ;
var yValue = y / 20037508.34 * ;
yValue = / Math.PI * ( * Math.Atan(Math.Exp(yValue * Math.PI / )) - Math.PI / );
var longitude = xValue;
var latitude = yValue;
return new Position(longitude, latitude);
}
}
}
代码原文连接 https://blog.csdn.net/a_dev/article/details/80990492
C#实现墨卡托投影坐标系经纬度与米制单位之间的互转的更多相关文章
- [转]墨卡托投影坐标系(Mercator Projection)原理及实现C代码
		
墨卡托投影是一种“等角正切圆柱投影”,荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面上的图形投影到圆柱体 ...
 - 墨卡托投影坐标系(Mercator Projection)原理及实现C代码
		
墨卡托投影是一种"等角正切圆柱投影",荷兰地图学家墨卡托(Mercator)在1569年拟定:假设地球被围在一个中空的圆柱里,其赤道与圆柱相接触,然后再假想地球中心有一盏灯,把球面 ...
 - js不同地图坐标系经纬度转换(天地图,高德地图,百度地图,腾讯地图)
		
1.js转换代码 1 //转换常数 2 var x_pi = 3.14159265358979324 * 3000.0 / 180.0; 3 var pi = 3.14159265358979324; ...
 - 经纬度转换为距离单位km的方法
		
function rad(d){ return d * Math.PI /180.0; }; GetDistance(lat1, lng1, lat2, lng2){ var radLat1 =rad ...
 - line-height不同单位之间的区别
		
line-height用来设置元素的行高. 该属性会影响行框的布局.在应用到一个块级元素时,它定义了该元素中基线之间的最小距离而不是最大距离. line-height 与 font-size 的计算值 ...
 - 比特(bit)、字,字节(B)存储单位之间的关系+其与操作系统位数的关系+不同编译器编译方式下数据类型的表示范围
		
1.在表示网络传输速度中与表示存储单位的不同: 表示存储单位时:1kB=1024B,但在网络中表示传输速度是1KB=1000B 2.下面介绍表示存储单位时的关系及其与操作系统位数的关系: 1B=8bi ...
 - OpenStreetMap、googleMap等经纬度和行列号之间相互转化
		
# OpenStreetMap经纬度转行列号 def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) n = 2.0 ...
 - OpenStreetMap、googleMap等经纬度和行列号之间相互转化(python,JavaScript,php,Java,C#等)
		
python: # OpenStreetMap经纬度转行列号 def deg2num(lat_deg, lon_deg, zoom): lat_rad = math.radians(lat_deg) ...
 - 【学习笔记】比特(bit)、字,字节(B)存储单位之间的关系+其与操作系统位数的关系+不同编译器编译方式下数据类型的表示范围
		
1.在表示网络传输速度中与表示存储单位的不同: 表示存储单位时:1kB=1024B,但在网络中表示传输速度是1KB=1000B 2.下面介绍表示存储单位时的关系及其与操作系统位数的关系: 1B=8bi ...
 
随机推荐
- 条款2:尽量以const, enum, inline替换#define
			
原因: 1. 追踪困难,由于在编译期已经替换,在记号表中没有. 2. 由于编译期多处替换,可能导致目标代码体积稍大. 3. define没有作用域,如在类中定义一个常量不行. 做法: 可以用const ...
 - IntentService----意图服务
			
意图服务是异步进行的 执行完操作后就会自己消毁(onDestroy方法) 本例为点击按钮下载三张图片相当于连续执行三次意图服务中的onStartcommand方法 import android.ap ...
 - Ubuntu 下如何查看已安装的软件
			
1.查看安装的所有软件 dpkg -l 例如:dpkg -l | grep ftp <span style="font-size:18px;">:~$ dpkg -l ...
 - OpenGLES.Functions.Missing.in.OpenGLES1.x
			
转载自: http://maniacdev.com/2009/05/big-list-of-opengl-functions-missing-in-iphone-opengl-es The funct ...
 - Laravel 加载自定义的 helpers.php 函数
			
Laravel 提供了很多 辅助函数,有时候我们也需要创建自己的辅助函数. 必须 把所有的『自定义辅助函数』存放于 bootstrap 文件夹中. 并在 bootstrap/app.php 文件的最顶 ...
 - eclipse 远程调试mapreduce
			
使用环境:centos6.5+eclipse(4.4.2)+hadoop2.7.0 1.下载eclipse hadoop 插件 hadoop-eclipse-plugin-2.7.0.jar 粘贴到 ...
 - Devexpress VCL Build v2014 vol 14.2.1 beta发布
			
已经快到2015 年了. 14.2.1 beta 才出来了. 还好,有一些新东西. 官网地址 VCL Gauge Control Designed to clearly convey informat ...
 - [原创汉化] 价值990美元的顶级专业数据恢复软件O&O DiskRecovery 11(技术员版)汉化绿色版
			
百度没搜索到11有汉化版的,有空就把它汉化了,大部分借鉴的是以前汉化版的词条.另外,顺便做了个二合一的单文件版给有需要的朋友. 运行环境: 可用于 Windows 2000/XP/2003/Vista ...
 - 2018.09.13 poj2728Desert King(最优比率生成树)
			
传送门 01分数规划经典题. 不过用krsukal会T掉. 这题用prim反而更快(毕竟是完全图) 因此直接二分+最小生成树搞定. 代码: #include<iostream> #incl ...
 - 2018.07.20 bzoj2152: 聪聪可可(点分治)
			
传送门 本蒟蒻AC的第二道点分治,调了30min" role="presentation" style="position: relative;"&g ...