地图坐标系转换

地图坐标系之间的转换(百度地图、GCJ、WGS84) 文章目录文章参考坐标系介绍常见坐标系WGS84坐标系(标准的GPS坐标)WGS84 Web墨卡托(平面地图)GCJ02经纬度投影(火星坐标系)GCJ02 Web 墨卡托投影BD09 经纬度投影常用坐标系区分?地图偏移为什么要地图偏移?偏移在哪里?地图做了偏移,为什么地图定位很精准(百度地图说明)坐标转换为什么要做坐标转换地图服务(后台地图引擎可提供的能力)TMS——Tile Map Service 即TMS,切片地图服务WMTS——Web Map Tile Service即WMTS,网络地图切片服务,WMS 阅读详情

转自:https://blog.youkuaiyun.com/a13570320979/article/details/51366355

一、在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系:

1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用;

2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,或者使用在GCJ-02加密后再进行加密的坐标系,如百度坐标系。高德和Google在国内都是使用GCJ-02坐标系,可以说,GCJ-02是国内最广泛使用的坐标系;

3.百度坐标系:bd-09,百度坐标系是在GCJ-02坐标系的基础上再次加密偏移后形成的坐标系,只适用于百度地图。(目前百度API提供了从其它坐标系转换为百度坐标系的API,但却没有从百度坐标系转为其他坐标系的API)

二。为什么会发生偏移?

1.由于坐标系之间不兼容,如在百度地图上定位的经纬度拿到高德地图上直接描点就肯定会发生偏移;只考虑国内的情况,高德地图和Google地图是可以不经过转换也能够准确显示的(在国内用的都是GCJ-02坐标系);下面是收录了网上的WGS-84,GCJ-02,百度坐标系(bd-09)之间的相互转换的方法,经测试,是转换后相对准确可用的:

[java]  view plain  copy
  1. package com.asiabasehk.cgg.util;  
  2.   
  3. /**火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的互转 
  4.  * Created by macremote on 16/5/3. 
  5.  */  
  6. public class GPSUtil {  
  7.     public static double pi = 3.1415926535897932384626;  
  8.     public static double x_pi = 3.14159265358979324 * 3000.0 / 180.0;  
  9.     public static double a = 6378245.0;  
  10.     public static double ee = 0.00669342162296594323;  
  11.   
  12.     public static double transformLat(double x, double y) {  
  13.         double ret = -100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y  
  14.                 + 0.2 * Math.sqrt(Math.abs(x));  
  15.         ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;  
  16.         ret += (20.0 * Math.sin(y * pi) + 40.0 * Math.sin(y / 3.0 * pi)) * 2.0 / 3.0;  
  17.         ret += (160.0 * Math.sin(y / 12.0 * pi) + 320 * Math.sin(y * pi / 30.0)) * 2.0 / 3.0;  
  18.         return ret;  
  19.     }  
  20.   
  21.     public static double transformLon(double x, double y) {  
  22.         double ret = 300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1  
  23.                 * Math.sqrt(Math.abs(x));  
  24.         ret += (20.0 * Math.sin(6.0 * x * pi) + 20.0 * Math.sin(2.0 * x * pi)) * 2.0 / 3.0;  
  25.         ret += (20.0 * Math.sin(x * pi) + 40.0 * Math.sin(x / 3.0 * pi)) * 2.0 / 3.0;  
  26.         ret += (150.0 * Math.sin(x / 12.0 * pi) + 300.0 * Math.sin(x / 30.0  
  27.                 * pi)) * 2.0 / 3.0;  
  28.         return ret;  
  29.     }  
  30.     public static double[] transform(double lat, double lon) {  
  31.         if (outOfChina(lat, lon)) {  
  32.             return new double[]{lat,lon};  
  33.         }  
  34.         double dLat = transformLat(lon - 105.0, lat - 35.0);  
  35.         double dLon = transformLon(lon - 105.0, lat - 35.0);  
  36.         double radLat = lat / 180.0 * pi;  
  37.         double magic = Math.sin(radLat);  
  38.         magic = 1 - ee * magic * magic;  
  39.         double sqrtMagic = Math.sqrt(magic);  
  40.         dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);  
  41.         dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);  
  42.         double mgLat = lat + dLat;  
  43.         double mgLon = lon + dLon;  
  44.         return new double[]{mgLat,mgLon};  
  45.     }  
  46.     public static boolean outOfChina(double lat, double lon) {  
  47.         if (lon < 72.004 || lon > 137.8347)  
  48.             return true;  
  49.         if (lat < 0.8293 || lat > 55.8271)  
  50.             return true;  
  51.         return false;  
  52.     }  
  53.     /** 
  54.      * 84 to 火星坐标系 (GCJ-02) World Geodetic System ==> Mars Geodetic System 
  55.      * 
  56.      * @param lat 
  57.      * @param lon 
  58.      * @return 
  59.      */  
  60.     public static double[] gps84_To_Gcj02(double lat, double lon) {  
  61.         if (outOfChina(lat, lon)) {  
  62.             return new double[]{lat,lon};  
  63.         }  
  64.         double dLat = transformLat(lon - 105.0, lat - 35.0);  
  65.         double dLon = transformLon(lon - 105.0, lat - 35.0);  
  66.         double radLat = lat / 180.0 * pi;  
  67.         double magic = Math.sin(radLat);  
  68.         magic = 1 - ee * magic * magic;  
  69.         double sqrtMagic = Math.sqrt(magic);  
  70.         dLat = (dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * pi);  
  71.         dLon = (dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * pi);  
  72.         double mgLat = lat + dLat;  
  73.         double mgLon = lon + dLon;  
  74.         return new double[]{mgLat, mgLon};  
  75.     }  
  76.   
  77.     /** 
  78.      * * 火星坐标系 (GCJ-02) to 84 * * @param lon * @param lat * @return 
  79.      * */  
  80.     public static double[] gcj02_To_Gps84(double lat, double lon) {  
  81.         double[] gps = transform(lat, lon);  
  82.         double lontitude = lon * 2 - gps[1];  
  83.         double latitude = lat * 2 - gps[0];  
  84.         return new double[]{latitude, lontitude};  
  85.     }  
  86.     /** 
  87.      * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标 
  88.      * 
  89.      * @param lat 
  90.      * @param lon 
  91.      */  
  92.     public static double[] gcj02_To_Bd09(double lat, double lon) {  
  93.         double x = lon, y = lat;  
  94.         double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);  
  95.         double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);  
  96.         double tempLon = z * Math.cos(theta) + 0.0065;  
  97.         double tempLat = z * Math.sin(theta) + 0.006;  
  98.         double[] gps = {tempLat,tempLon};  
  99.         return gps;  
  100.     }  
  101.   
  102.     /** 
  103.      * * 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 * * 将 BD-09 坐标转换成GCJ-02 坐标 * * @param 
  104.      * bd_lat * @param bd_lon * @return 
  105.      */  
  106.     public static double[] bd09_To_Gcj02(double lat, double lon) {  
  107.         double x = lon - 0.0065, y = lat - 0.006;  
  108.         double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);  
  109.         double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);  
  110.         double tempLon = z * Math.cos(theta);  
  111.         double tempLat = z * Math.sin(theta);  
  112.         double[] gps = {tempLat,tempLon};  
  113.         return gps;  
  114.     }  
  115.   
  116.     /**将gps84转为bd09 
  117.      * @param lat 
  118.      * @param lon 
  119.      * @return 
  120.      */  
  121.     public static double[] gps84_To_bd09(double lat,double lon){  
  122.         double[] gcj02 = gps84_To_Gcj02(lat,lon);  
  123.         double[] bd09 = gcj02_To_Bd09(gcj02[0],gcj02[1]);  
  124.         return bd09;  
  125.     }  
  126.     public static double[] bd09_To_gps84(double lat,double lon){  
  127.         double[] gcj02 = bd09_To_Gcj02(lat, lon);  
  128.         double[] gps84 = gcj02_To_Gps84(gcj02[0], gcj02[1]);  
  129.         //保留小数点后六位  
  130.         gps84[0] = retain6(gps84[0]);  
  131.         gps84[1] = retain6(gps84[1]);  
  132.         return gps84;  
  133.     }  
  134.   
  135.     /**保留小数点后六位 
  136.      * @param num 
  137.      * @return 
  138.      */  
  139.     private static double retain6(double num){  
  140.         String result = String .format("%.6f", num);  
  141.         return Double.valueOf(result);  
  142.     }  
  143.   
  144. }  



2.在国内定位的经纬度,然后在国外网络下显示也会发生偏移(谷歌和高德会依据网络的情况选择使用WGS-84坐标还是GCJ-02坐标,百度地图则一直使用bd-02坐标系)

3.定位方式,在iOS定位的经纬度是通过GPS获取的,在android则可以通过网络或GPS获取经纬度。通过地图SDK定位获取的经纬度,地图SDK会自动选择加密的方式(如Google地图会根据国内国外选择不同的坐标系)然后再将点显示在地图上,这个时候是没有偏移的;如果直接将经纬度在地图上显示,可能就会因为地域或网络的问题导致使用的坐标系不同,进而发生来偏移。

地图坐标系大全:常用地图坐标系详解与转换指南 地图坐标系是用于描述地图上位置的数学模型。它可以用来表示地球表面上的任意一个点,使得这个点的位置可以在地图上精确定位。不同的地图坐标系采用不同的基准面和投影方式,因此会有不同的坐标系参数,不同的坐标系之间也需要进行坐标转换。在地图制图、导航、GIS等领域中,地图坐标系是一个非常重要的概念。 阅读详情

相关推荐

如何将影像地图转换为国家2000坐标系

一、影像获取 在图新地球中可以免费下载(不用邀请,永久免费,非试用)各类影像和地图,这里我们以谷歌地图为例进行下载。 下载结果如下: 二、坐标系转换 这里借助Global Mapper(下文简称gm)进行投影坐标系的转换,我们先将刚才下载的tif格式的影像拖入gm: 这里我们可以看到右下角显示的投影坐标为wgs84-web墨卡托投影: 在菜单栏中,我们打开工具菜单下的配置功能: 点开进入投影配置界面: 这里因为gm的参数库中缺少国家2000坐标系的信息,所以无法直接通

LocaSpace的博客 9807

GPS、谷歌、百度、高德坐标相互转换

GPS、谷歌、百度、高德坐标相互转换 一、在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用; 2.GCJ-02坐标系,又名“火星坐标...

被遗忘的遐想空间 2874

地图定位偏移以及坐标系转换(二)-不同坐标系的转换

不同坐标系的转换以及遇到的问题

ly2983068126的博客 3630

高德,百度,Google地图定位偏移以及坐标系转换

http://blog.youkuaiyun.com/a13570320979/article/details/51366355 一。在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS

java、c++、机器学习方向King 1100

国内地图坐标系介绍及常见地图(百度、高德、凯立德)之间的坐标系转换

一、国内地图坐标系简介 1、  WGS84(地图坐标) 美国GPS使用的是WGS84的坐标系统。GPS系统获得的坐标系统,基本为标准的国际通用的WGS84坐标系统 2、  GCJ-02(火星坐标) GCJ-02是由中国国家测绘局制订的地理信息系统的坐标系统。它是一种对经纬度数据的加密算法,即加入随机的偏差。国内出版的各种地图系统(包括电子形式),出于国家安全考虑,必须至少采用GCJ

寄情于码 1万+

百度地图坐标系转换

做一个包含地图的项目,地图切片用的是百度的。实际使用时发现,地图上数据的点位有误差。这是因为坐标系不一致导致。正常手机定位采用的是GPS,上报的点位都是WGS84坐标系,而百度地图采用的是BD09坐标系。

fantudan00的博客 2883

python实现坐标系转换_python、js实现WGS84、高德(火星)、百度坐标转换

在日常工作学习中常会涉及到WGS84、高德(火星/谷歌)、百度三种空间坐标系的坐标转换,本文将通过python、js两种语言实现坐标系的转换。坐标系说明:wgs84:为一种大地坐标系,也是目前广泛使用的GPS全球卫星定位系统使用的坐标系。高德/谷歌:采用GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创的坐标体系,由WGS-84加密而成,在国内,必须至少使用GCJ-02坐标系,或者使用在GC...

weixin_39743064的博客 1432

百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换纠偏的JS实现

主要实现百度、高德、谷歌、火星、wgs84(2000)地图坐标相互转换纠偏的JS实现

百度高德谷歌地图与大地坐标系相互转换

百度高德谷歌地图与大地坐标系相互转换 import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * @Author Zhanglele * @Date 2020/11/13 20:14 */ public class ChinaMapUtil { private static List<Point[]> chinaPolygon = new ArrayList<&gt

qq_42424503的博客 1007

智慧杯 考试必备

2019.4. 强密码 描述 我们称一个密码是强密码,当且仅当它满足以下所有条件: 由 8 − 16 个字符组成 至少包含一个大写字母 (A-Z) 至少包含一个小写字母 (a-z) 至少包含一个数字 (0-9) 至少包含一个特殊符号 (! @ #$ % & * _ +) 娇娇发现她现在的密码好像不是强密码,请你帮她计算一下最少添加几个 字符可以变成强密码? 输入 输入仅一行,一个字符串,表示娇娇当前的密码 输出 输出一个数表示答案 如果不需要添加任何字符就已.

Fairy1208的博客 2861

自动驾驶预测决策规划八股

预测规划八股个人总结。

dawushixiange的博客 479

高德坐标与谷歌坐标互相转换

一、常识: 目前常见的坐标系有三种:地球坐标(WGS84,国际公认坐标,标准坐标),火星坐标(GCJ02,国家标准,适用于高德百度地图大陆+港澳部分、Google地图大陆部分),百度坐标(BD09,适用于百度地图大陆+港澳台部分)。 二、代码: 1、地球坐标转火星坐标 +(CLLocationCoordinate2D)WGS84ToGCJ02transform:(double) wgLon

我的iOS王者之路 1万+

CameraLink接口详解:从引脚定义到信号传输

本文详细解析了CameraLink接口的物理连接与信号传输机制。从MDR26连接器的引脚定义与镜像关系入手,深入讲解了BASE与MEDIUM模式下的信号映射、LVDS差分传输原理,并强调了屏蔽层处理与端接电阻等关键硬件设计细节。文章结合实战经验,提供了常见图像传输问题的排查思路,是工业视觉领域高速图像传输的实用指南。

weixin_28318011的博客 889

地图坐标系转换简介

地图坐标系转换简介及问题分享 背景介绍 从android系统定位获取到的经纬度,到谷歌地图查询,发现定位偏移很大,以为是定位误差或者定位策略问题导致,实际上并非如此,详情以下分解。 各坐标系简介 WGS84坐标系 即地球坐标系,国际上通用的坐标系。 设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系。谷歌地图采用的是WGS84地理坐标系(中国范围内谷歌中国地图采用的是GCJ02地理坐标系),android手机定位使用 GCJ02坐标系 即火星坐标系,WGS84坐标系经加

leokingszx的博客 1866

超详细的YOLOv8项目组成解析:一站式指南了解其架构与组件

最近的更新是关于“Segment ONNX Runtime example”的,意味着它添加了对ONNX运行时的支持,特别是针对模型分割功能的支持。这些文件和文件夹共同工作,以确保 YOLOv8 的文档是全面的、多语言的,并且始终保持最新。这些示例涵盖了从基本的对象检测到更复杂的图像分割和视频处理任务,为开发者提供了丰富的学习资源和应用指导。最近的更新也是关于 ONNX 运行时示例。这些文件夹共同构成了 YOLOv8 的基础框架,从数据处理和模型配置到实际的训练和推理引擎,以及实用工具和高级功能的实现。

CDBmax的博客 1万+

Python爬虫实战:全网政府招标信息采集与整合

本文详细介绍了如何使用Python构建一个完整的政府招标信息爬虫系统,涵盖了从数据采集、解析、存储到质量监控的全流程。多源采集:支持多个地方政府网站的同时采集智能解析:自动适应不同网站结构,智能提取关键信息异步高效:使用异步编程提高采集效率反爬应对:内置多种反爬虫应对策略数据质量:完善的数据清洗和质量监控机制易于扩展:模块化设计,便于添加新的数据源。

2201_76125261的博客 1380

常用的几种在线地图(天地图、百度地图、高德地图)坐标系之间的转换算法

1、首先弄明白几种在线地图的坐标系; (1)天地图:CGCS2000,2000国家大地坐标系;我们其实很多时候直接用WGS84的坐标来代替CGCS2000坐标。因为CGCS2000的定义与WGS84实质一样。采用的参考椭球非常接近。扁率差异引起椭球面上的纬度和高度变化最大达0.1mm。当前测量精度范围内,可以忽略这点差异。可以说两者相容至cm级水平,但若一点的坐标精度达不到cm水平,则不认为CGC...

四域公子的博客 10万+

在 ABAP SEGW OData 服务里,把 Function Import 参数长度校验真正跑起来

SAP Gateway服务中Function Import参数长度校验的实现机制解析:在SEGW中定义Max Length参数后,需通过模型特性USE_STRICT_FUNCTION_PARAM_CHK(7.52+版本支持)启用严格检查。该特性需在MPC_EXT的DEFINE方法中设置,框架会在URI解析阶段拦截超长参数,避免错误进入业务逻辑。对于低版本系统,建议在应用层手动添加校验。这种模型驱动的方式符合Clean Core原则,能有效提升接口健壮性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 493

常见地图坐标系以及转换方法、转换工具

因为国内对地理坐标有特殊的政策,GPS获取的原始坐标不能在互联网上对外提供,所有电子地图必须对位置做偏移处理,这就导致从底层接口得到的坐标展示在地图上会有偏移。不同的坐标系之间可能有几十到几百米的偏移,所以在地图上绘制矢量图形、做地理数据可视化时,需要修正不同坐标系之间的偏差。 包含常见地图坐标系以及转换方法、转换工具......

泛、不系之舟 6170

yolov26改进 | 融合改进篇 | 基于 MobileNetV4 和双向特征金字塔网络BiFPN的融合改进(全网独家首发)

本文介绍BiFPN与MobileNetV4融合改进的YOLOv26。许多模块单独使用能够涨点,但直接叠加后可能因功能重复、通道不匹配、尺度冲突而掉点,因此融合前必须理解各模块作用。MobileNetV4利用UIB与Mobile MQA构建轻量主干,提升特征提取能力;BiFPN通过可学习权重完成双向多尺度融合,强化大、中、小目标的信息交互。两者优化Backbone与Neck,功能互补、结构冲突较少。本文提供代码、配置、消融对比及Codex修改思路,MobileNetV4也可替换其他主干,便于组合实验与二次创新

Snu77的博客 241

用 AI 设计力打造专业 UI_UX:在 Trea、Qoder 等 AI IDE 中集成 ui-ux-pro-max-skill

的核心是知识库Trea 和 Qoder 虽未被--ai all原生支持,但完全可通过@folder手动集成使用后,你的 AI 生成代码将从“功能可用”跃升至“设计专业”这是零成本提升产品质感的最佳实践之一🎨好的 UI 不应是设计师的专利,而是每个开发者的默认能力。然后在 Trea 或 Qoder 中输入—— 让 AI 成为你最懂设计的结对编程伙伴。

lpfasd123的博客 7101

对.gpx文件进行地图坐标系转换

引子 关于地图坐标系,可以参考这篇文章,下表列出了几种常用的坐标系: 坐标系 解释 使用地图 WGS84 地球坐标系,国际上通用的坐标系。设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,最基础的坐标,谷歌地图在非中国地区使用的坐标系 GPS/谷歌地图卫星 GCJ02 火星坐标系,是由中国国家测绘局制订的地理信息系统的坐标系统。并要求在中国使用的地图产品使用的都必须是加密后的坐标,而这套WGS84加密后的坐标就是gcj02。 腾讯(搜搜)地图,阿里云地图,高德地图,谷

步子大了吧 8551

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

不同地图坐标系转换

目前常用的地图坐标系有多种标准,几家主流地图(如百度地图,高德地图和QQ地图等)使用的坐标系标准也各不相同。假如您有GPS坐标,想在百度地图上显示;或者有百度地图的坐标,但想在微信地图上显示,这时就需要使用一些算法或通过官方的API来转换坐标,在目标地图上正确显示。

不积跬步,无以至千里 630

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

百度地图和高德地图坐标系的互相转换

原文地址:http://blog.youkuaiyun.com/a13570320979/article/details/51366355 一。在进行地图开发过程中,我们一般能接触到以下三种类型的地图坐标系: 1.WGS-84原始坐标系,一般用国际GPS纪录仪记录下来的经纬度,通过GPS定位拿到的原始经纬度,Google和高德地图定位的的经纬度(国外)都是基于WGS-84坐标系的;但是在国内是不允许直接用WGS84坐标系标注的,必须经过加密后才能使用; 2.GCJ-02坐标系,又名“火星坐标系”,是我国国测局独创

u010194271的博客 8165

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

上一篇: 将项目中的maven包打包到lib文件夹
下一篇: 解决ssm项目中资源文件关联不到
奈洛先森
博客等级 码龄9年 7粉丝 107原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值