经纬度定位位置api调用代码实例和经纬度转换大地坐标接口调用代码实例
经纬度定位位置api调用代码实例和经纬度转换大地坐标接口调用代码实例
api调用从而实现聚合数据谷歌POI接口数据调用,对于聚合数据基于JAVA的股票数据接口调用代码可以计算unsigned long long类型范围内的值的阶
可自动和手动切换的jQuery图片轮播,快速排序一种简练和demo
快速在内存中建立树结构的工具
扩展String对象replaceAll函数 void DHT11(void) //温湿传感启动
{
DATA_PIN=0;
Delay_ms(50); //>18MS
DATA_PIN=1;
P1DIR &= ~0x02; //重新配置IO口方向
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
Delay_10us();
if(!DATA_PIN)
//利用for循环遍历关联数组
//利用jquery实现百度新闻导航菜单滑动动画
//面向对象&静态构造函数&const
{
ucharFLAG=2;
while((!DATA_PIN)&&ucharFLAG++);
ucharFLAG=2;
while((DATA_PIN)&&ucharFLAG++);
COM();
ucharRH_data_H_temp=ucharcomdata;
COM();
ucharRH_data_L_temp=ucharcomdata;
COM();
ucharT_data_H_temp=ucharcomdata;
COM();
ucharT_data_L_temp=ucharcomdata;
COM();
ucharcheckdata_temp=ucharcomdata;
DATA_PIN=1;
//模拟登录京东并获取京东商品信息,如价格、库
//模拟登录开源中国并发动弹
uchartemp=(ucharT_data_H_temp+ucharT_data_L_temp+ucharRH_data_H_temp+ucharRH_da ta_L_temp);
if(uchartemp==ucharcheckdata_temp)
{
ucharRH_data_H=ucharRH_data_H_temp; ucharRH_data_L=ucharRH_data_L_temp; ucharT_data_H=ucharT_data_H_temp;
ucharT_data_L=ucharT_data_L_temp;
ucharcheckdata=ucharcheckdata_temp; }
wendu_shi=ucharT_data_H/10;
wendu_ge=ucharT_data_H%10;
shidu_shi=ucharRH_data_H/10;
shidu_ge=ucharRH_data_H%10;
}
else //没用成功读取,返回0
{
wendu_shi=0;
wendu_ge=0;
shidu_shi=0;
shidu_ge=0;
}
P1DIR |= 0x02; //IO口需要重新配置
//判断浏览器是否opera
//判断是否为内网IP
//判断是否为域名同时域名解析
[文件] DHT11.h ~ 442B
#ifndef __DHT11_H__
#define __DHT11_H__
[代码] [Google Go]代码
package main
import (
"io/ioutil"
"net/http"
"net/"
"fmt"
"encoding/json"
)
APPKEY = "*******************" //您申请的APPKEY func main(){
//1.上海黄金交易所
Request1()
//2.上海期货交易所
Request2()
//3.银行账户黄金
Request3()
}
//1.上海黄金交易所
func Request1(){
//请求地址
juhe :="/finance/gold/shgold"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参
param.Set("key",APPKEY) //APP Key
param.Set("v","") //JSON格式版本(0或1)默认为0
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
//2.上海期货交易所
func Request2(){
//请求地址
juhe :="/finance/gold/shfuture"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参
param.Set("key",APPKEY) //APP Key
param.Set("v","") //JSON格式版本(0或1)默认为0
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
//3.银行账户黄金
func Request3(){
//请求地址
juhe :="/finance/gold/bankgold"
//初始化参数
param:=.Values{}
//配置请求参数,方法内部已处理encode问题,中文参数可以直接传参
param.Set("key",APPKEY) //APP Key
//发送请求
data,err:=Get(juhe,param)
if err!=nil{
fmt.Errorf("请求失败,错误信息:\r\n%v",err)
}else{
var netReturn map[string]interface{}
json.Unmarshal(data,&netReturn)
if netReturn["error_code"].(float64)==0{
fmt.Printf("接口返回result字段是:\r\n%v",netReturn["result"]) }
}
}
// get 网络请求
func Get(api string,params .Values)(rs[]byte ,err error){
var *.
,err=.Parse(api)
if err!=nil{
fmt.Printf("解析错误:\r\n%v",err)
return nil,err
}
//如果参数中有中文参数,这个方法会进行Encode
.RawQuery=params.Encode()
resp,err:=http.Get(.String())
if err!=nil{
fmt.Println("err:",err)
return nil,err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}
// post 网络请求 ,params 是.Values类型
func Post(api string, params .Values)(rs[]byte,err error){ resp,err:=http.PostForm(api, params)
if err!=nil{
return nil ,err
}
defer resp.Body.Close()
return ioutil.ReadAll(resp.Body)
}
代码描述:基于GO的黄金数据接口调用代码实例
关联数据:黄金数据
[代码] [C#]代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using https://www.360docs.net/doc/5b6626320.html,;
using System.IO;
using https://www.360docs.net/doc/5b6626320.html,;
using System.Diagnostics;
using System.Web;
//----------------------------------
// 黄金数据调用示例代码-聚合数据
// 在线接口文档:www/docs/29
// 代码中JsonObject类下载地
址:https://www.360docs.net/doc/5b6626320.html,/download/gcm3206021155665/7458439
//----------------------------------
namespace ConsoleAPI
{
class Program
{
static void Main(string[] args)
{
string appkey = "*******************"; //配置您申请的appkey
//1.上海黄金交易所
string 1 = "/finance/gold/shgold";
var parameters1 = new Dictionary
parameters1.Add("key", appkey);//你申请的key
parameters1.Add("v" , ""); //JSON格式版本(0或1)默认为0
string result1 = sendPost(1, parameters1, "get");
JsonObject newObj1 = new JsonObject(result1);
String errorCode1 = newObj1["error_code"].Value;
if (errorCode1 == "0")
{
Debug.WriteLine("成功");
Debug.WriteLine(newObj1);
}
else
{
//Debug.WriteLine("失败");
Debug.WriteLine(newObj1["error_code"].Value+":"+newObj1["reason"].Value); }
//2.上海期货交易所
string 2 = "/finance/gold/shfuture";
var parameters2 = new Dictionary
parameters2.Add("key", appkey);//你申请的key
parameters2.Add("v" , ""); //JSON格式版本(0或1)默认为0
string result2 = sendPost(2, parameters2, "get");
JsonObject newObj2 = new JsonObject(result2);
String errorCode2 = newObj2["error_code"].Value;
if (errorCode2 == "0")
{
Debug.WriteLine("成功");
Debug.WriteLine(newObj2);
}
else
{
//Debug.WriteLine("失败");
Debug.WriteLine(newObj2["error_code"].Value+":"+newObj2["reason"].Value); }
//3.银行账户黄金
string 3 = "/finance/gold/bankgold";
var parameters3 = new Dictionary
parameters3.Add("key", appkey);//你申请的key
string result3 = sendPost(3, parameters3, "get");
JsonObject newObj3 = new JsonObject(result3);
String errorCode3 = newObj3["error_code"].Value;
if (errorCode3 == "0")
{
Debug.WriteLine("成功");
Debug.WriteLine(newObj3);
}
else
{
//Debug.WriteLine("失败");
Debug.WriteLine(newObj3["error_code"].Value+":"+newObj3["reason"].Value); }
}
///
/// Http (GET/POST)
///
/// 请求
/// 请求参数
/// 请求方法
///
static string sendPost(string , IDictionary
{
if (method.ToLower() == "post")
{
HttpWebRequest req = null;
HttpWebResponse rsp = null;
System.IO.Stream reqStream = null;
try
{
req = (HttpWebRequest)WebRequest.Create();
req.Method = method;
req.KeepAlive = false;
req.ProtocolVersion = HttpVersion.Version10;
req.Timeout = 5000;
req.ContentType =
"application/x-www-form-encoded;charset=utf-8";
byte[] postData =
Encoding.UTF8.GetBytes(BuildQuery(parameters, "utf8"));
reqStream = req.GetRequestStream();
reqStream.Write(postData, 0, postData.Length);
rsp = (HttpWebResponse)req.GetResponse();
Encoding encoding = Encoding.GetEncoding(rsp.CharacterSet); return GetResponseAsString(rsp, encoding);
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
if (reqStream != null) reqStream.Close();
if (rsp != null) rsp.Close();
}
}
else
{
//创建请求
HttpWebRequest request = (HttpWebRequest)WebRequest.Create( + "?" + BuildQuery(parameters, "utf8"));
//GET请求
request.Method = "GET";
request.ReadWriteTimeout = 5000;
request.ContentType = "text/html;charset=UTF-8";
HttpWebResponse response =
(HttpWebResponse)request.GetResponse();
Stream myResponseStream = response.GetResponseStream();
StreamReader myStreamReader = new StreamReader(myResponseStream, Encoding.GetEncoding("utf-8"));
//返回内容
string retString = myStreamReader.ReadToEnd();
return retString;
}
}
///
/// 组装普通文本请求参数。
///
/// Key-Value形式请求参数字典
///
static string BuildQuery(IDictionary
{
StringBuilder postData = new StringBuilder();
bool hasParam = false;
IEnumerator
parameters.GetEnumerator();
while (dem.MoveNext())
{
string name = dem.Current.Key;
string value = dem.Current.Value;
// 忽略参数名或参数值为空的参数
if
(!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmpty(value)
{
if (hasParam)
{
postData.Append("&");
}
postData.Append(name);
postData.Append("=");
if (encode == "gb2312")
{
postData.Append(HttpUtility.Encode(value,
Encoding.GetEncoding("gb2312")));
}
else if (encode == "utf8")
{
postData.Append(HttpUtility.Encode(value,
Encoding.UTF8));
}
else
{
postData.Append(value);
}
hasParam = true;
}
}
return postData.ToString();
}
///
/// 把响应流转换为文本。
///
/// 响应流对象
/// 编码方式
///
static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding) {
System.IO.Stream stream = null;
StreamReader reader = null;
try
{
// 以字符流的方式读取HTTP响应
stream = rsp.GetResponseStream();
reader = new StreamReader(stream, encoding);
return reader.ReadToEnd();
}
finally
{
// 释放资源
if (reader != null) reader.Close();
if (stream != null) stream.Close();
if (rsp != null) rsp.Close();
}
}
}
}
[代码] [PHP]代码
/**
* c远程传输工具
*/ https://www.360docs.net/doc/5b6626320.html,
public function post_c($,$body,$header,$type='POST'){
$ch = c_init();
c_setopt($ch,COPT_,$);
c_setopt($ch,COPT_HEADER,0);//0只要正文
c_setopt($ch,COPT_TIMEOUT,5);//设置超时时间
c_setopt($ch,COPT_CONNECTTIMEOUT,5);
//将c_exec()获取的信息以文件流的形式返回,而不是直接输出。 c_setopt($ch,COPT_RETURNTRANSFER,1);
//增加header头信息
// array_push($header,'Accept:application/json');
// array_push($header,'Content-Type:application/json');
// array_push($header,'http:multipart/form-data');
if(count($body)>0){
c_setopt($ch,COPT_POSTFIELDS,$body);
}
if(count($header)>0){
c_setopt($ch,COPT_HTTPHEADER,$header);
}
//设置上传文件相关
c_setopt($ch,COPT_FOLLOWLOCATION,true);
c_setopt($ch,COPT_MAXREDIRS,3);//递归
c_setopt($ch,COPT_SSL_VERIFYPEER,false);// 对认证证书来源的检查 c_setopt($ch,COPT_SSL_VERIFYHOST,0);// 从证书中检查SSL加密算法 switch ($type) {
case 'GET':
c_setopt($ch,COPT_HTTPGET,1);
break;
case 'POST':
c_setopt($ch,COPT_POST,1);
break;
case 'PUT':
c_setopt($ch,COPT_CUSTOMREQUEST,'PUT');
break;
case 'DELETE':
c_setopt($ch,COPT_CUSTOMREQUEST,'DELETE');
break;
}
//上传文件相关设置
c_setopt($ch,COPT_ENCODING,'gzip');
c_setopt($ch,COPT_USERAGENT,'SSTS Browser/1.0');
c_setopt($ch,COPT_USERAGENT,'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0)');// 模拟用户使用的浏览器
if(c_errno($ch)){
return c_error($ch);
}
$content = c_exec($ch);
c_close($ch);//关闭c资源,并且释放系统资源
$result = json_decode($content,true);
if(!empty($result)){
return $result;
}else{
return $content;
}
}
[代码] [C/C++]代码
/*https://www.360docs.net/doc/5b6626320.html, 小型臭氧发生器侳侱侲
编译指令
$ /opt/sybase/OCS-16_0/bin/cpre64 -m teststu.cp
$ cc -m64 -g -DSYB_LP64 -I. -I/opt/sybase/OCS-16_0/include teststu.c
/opt/sybase/OCS-16_0/include/sybesql.c -L/opt/sybase/OCS-16_0/lib -lsybct64
-lsybtcl64 -lsybcs64 -lsybcomn64 -lsybintl64 -lsybunic64 -rdynamic -ldl -lnsl -lm -o teststu
*/
#include
/*建立通讯区域*/
EXEC SQL INCLUDE SQLCA;
/*
** These tokens must be declared in a declare section
** because they are used in declare sections below.
*/
EXEC SQL BEGIN DECLARE SECTION;
#define TYPESIZE 13
#define TIDSIZE 6
EXEC SQL END DECLARE SECTION;
#define EOLN '\0'
/*
** Forward declarations of the error and message handlers and
** other subroutines called from main().
*/
void error_handler();
void warning_handler();
int
main(int argc, char *argv[])
{
/*声明宿主变量*/
EXEC SQL BEGIN DECLARE SECTION;
/* storage for login name and password. */
char username[30];
char sname[30];
char password[30];
char server[30];
EXEC SQL END DECLARE SECTION;
/*错误处理*/
EXEC SQL WHENEVER SQLERROR CALL error_handler();
EXEC SQL WHENEVER SQLWARNING CALL warning_handler();
EXEC SQL WHENEVER NOT FOUND CONTINUE;
/*连接到 SQL SERVER 服务器*/
/*
** Copy the user name and password defined in sybsqlex.h to
** the variables declared for them in the declare section.
*/
strcpy(username, "mymotif");
strcpy(password, "wxwpxh");
strcpy(server, "MYMOTIFVOSTRO145480");
EXEC SQL CONNECT :username IDENTIFIED BY :password using :server;
EXEC SQL USE testdb;
EXEC SQL DECLARE c1 CURSOR FOR
SELECT SNAME FROM STUDENT;
EXEC SQL OPEN c1;
printf("name in table student\n");
do {
EXEC SQL FETCH c1 INTO :sname;
if (sqlca.sqlcode != 0) break;
printf( "student name = %s\n", sname );
} while ( 1 );
EXEC SQL CLOSE c1;
return(0);
}
/*错误处理程序*/
/*
** void error_handler()
**
** Displays error codes and numbers from the SQLCA and exits with ** an ERREXIT status.
*/
void
error_handler(void)
{
fprintf(stderr, "\n** SQLCODE=(%ld)", sqlca.sqlcode);
if (sqlca.sqlerrm.sqlerrml)
{
fprintf(stderr, "\n** ASE Error ");
fprintf(stderr, "\n** %s", sqlca.sqlerrm.sqlerrmc);
}
fprintf(stderr, "\n\n");
exit(-1);
}
/*
** void warning_handler()
**
** Displays warning messages.
*/
void
warning_handler(void)
{
if (sqlca.sqlwarn[1] == 'W')
{
fprintf(stderr,
"\n** Data truncated.\n");
}
if (sqlca.sqlwarn[3] == 'W')
{
fprintf(stderr,
"\n** Insufficient host variables to store results.\n");
}
return;
}
[代码] Log4j配置
导入这个包,会引入下面两个jar
[文件] 无缝滚动.html ~ 1KB
*{
margin: 0;padding: 0;
}
#wrap ul li{
width: 380px;
height: 230px;
float: left;
list-style: none;
}
#wrap ul{
position: absolute;
left: 0;
top: 0;
}
#wrap{
width: 1520px;
height: 230px;
margin: 100px 50px;
position: relative;
background: red;
overflow: hidden;
}
window.onload=function(){
var oDiv=document.getElementById('wrap');
var oUl=oDiv.getElementsByTagName('ul')[0];
var oLi=oUl.getElementsByTagName('li');
oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;
oUl.style.width=oLi[0].offsetWidth*oLi.length+'px'; setInterval(function(){
if(oUl.offsetLeft<-oUl.offsetWidth/2){
oUl.style.left='0'
}
oUl.style.left=oUl.offsetLeft-2+'px';
},30)
}
[代码] 获取的参数
//获取的参数
function getParam(paramKey){
//获取当前
var = location.href;
//获取要取得的get参数位置
var get = .indexOf(paramKey +"=");
if(get == -1){
return false;
}
//截取字符串
var getParamStr = .slice(paramKey.length + get + 1);
//判断截取后的字符串是否还有其他get参数
var nextparam = getParamStr.indexOf("&");
if(nextparam != -1){
getParamStr = getParamStr.slice(0, nextparam);
}
return decodeURIComponent(getParamStr);
}
[代码] 添加参数
//添加参数
function addParam(,paramKey,paramVal){
var andStr = "?";
var beforeparam = .indexOf("?");
if(beforeparam != -1){
andStr = "&";
}
return + andStr + paramKey + "="+ encodeURIComponent(paramVal); }
[代码] 删除参数
//删除参数
function delParam(,paramKey){
var Param = .substr(.indexOf("?")+1);
var before = .substr(0,.indexOf("?"));
var next = "";
var arr = new Array();
if(Param!=""){
var ParamArr = Param.split("&");
for(var i=0;i var paramArr = ParamArr[i].split("="); if(paramArr[0]!=paramKey){ arr.push(ParamArr[i]); } } } if(arr.length>0){ next = "?"+arr.join("&"); } = before+next; return ; } [代码] [C#]代码 #region 防止sql注入式攻击(可用于UI层控制) /// /// 判断字符串中是否有SQL攻击代码 /// /// 传入用户提交数据 /// true-安全;false-有注入攻击现有; public bool ProcessSqlStr(string inputString) { string SqlStr = @"and|or|exec|execute|insert|select|delete|update|alter|create|drop|count|\*|ch r|char|asc|mid|substring|master|truncate|declare|xp_cmdshell|restore|backup|net +user|net +localgroup +administrators"; try { if ((inputString != null) && (inputString != String.Empty)) { string str_Regex = @"\b(" + SqlStr + @")\b"; Regex Regex = new Regex(str_Regex, RegexOptions.IgnoreCase); //string s = Regex.Match(inputString).Value; if (true == Regex.IsMatch(inputString)) return false; } } catch { return false; } return true; } /// /// 处理用户提交的请求,校验sql注入式攻击,在页面装置时候运行 /// System.Configuration.ConfigurationSettings.AppSettings["ErrorPage"].ToString(); 为用户自定义错误页面提示地址, /// 在Web.Config文件时里面添加一个 ErrorPage 即可 /// /// /// public void ProcessRequest() { try { string getkeys = ""; string sqlErrorPage = System.Configuration.ConfigurationSettings.AppSettings["ErrorPage"].ToString(); if (System.Web.HttpContext.Current.Request.QueryString != null) { for (int i = 0; i < System.Web.HttpContext.Current.Request.QueryString.Count; i++) { getkeys = System.Web.HttpContext.Current.Request.QueryString.Keys[i]; if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.QueryString[getkeys])) { System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "?errmsg=" + getkeys + "有SQL攻击嫌疑!"); System.Web.HttpContext.Current.Response.End(); } } } if (System.Web.HttpContext.Current.Request.Form != null) { for (int i = 0; i < System.Web.HttpContext.Current.Request.Form.Count; i++) { getkeys = System.Web.HttpContext.Current.Request.Form.Keys[i]; if (!ProcessSqlStr(System.Web.HttpContext.Current.Request.Form[getkeys])) { System.Web.HttpContext.Current.Response.Redirect(sqlErrorPage + "?errmsg=" + getkeys + "有SQL攻击嫌疑!"); System.Web.HttpContext.Current.Response.End(); } } } } catch { // 错误处理: 处理用户提交信息! } } #endregion #region 转换sql代码(也防止sql注入式攻击,可以用于业务逻辑层,但要求UI层输入数据时候进行解码) /// /// 提取字符固定长度 /// /// /// /// public string CheckStringLength(string inputString, Int32 maxLength) { if ((inputString != null) && (inputString != String.Empty)) { inputString = inputString.Trim(); if (inputString.Length > maxLength) inputString = inputString.Substring(0, maxLength); } return inputString; } /// /// 将输入字符串中的sql敏感字,替换成"[敏感字]",要求输出时,替换回来 大地坐标和经纬度之间的换算 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可, 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是 经度/3得到的整数为三度带的分带号 经度/6得到的整数为六度带的分带号 其中的XP为地图上的Y坐标,记得在前面加上带号,其中的YP为地图上的X坐标 大地坐标与直角空间坐标转换计算公式 一、参心大地坐标与参心空间直角坐标转换 1名词解释: A :参心空间直角坐标系: a) 以参心0为坐标原点; b) Z 轴与参考椭球的短轴(旋转轴)相重合; c) X 轴与起始子午面和赤道的交线重合; d) Y 轴在赤道面上与X 轴垂直,构成右手直角坐标系0-XYZ ; e) 地面点P 的点位用(X ,Y ,Z )表示; B :参心大地坐标系: a) 以参考椭球的中心为坐标原点,椭球的短轴与参考椭球旋转轴重合; b) 大地纬度B :以过地面点的椭球法线与椭球赤道面的夹角为大地纬度B ; c) 大地经度L :以过地面点的椭球子午面与起始子午面之间的夹角为大地经度L ; d) 大地高H :地面点沿椭球法线至椭球面的距离为大地高H ; e) 地面点的点位用(B ,L ,H )表示。 2 参心大地坐标转换为参心空间直角坐标: ?? ? ?? +-=+=+=B H e N Z L B H N Y L B H N X sin *])1(*[sin *cos *)(cos *cos *)(2 公式中,N 为椭球面卯酉圈的曲率半径,e 为椭球的第一偏心率,a 、b 椭球的长短半径,f 椭球扁率,W 为第一辅助系数 a b a e 2 2-= 或 f f e 1 *2-= W a N B W e = -=22 sin *1( 西安80椭球参数: 长半轴a=6378140±5(m ) 短半轴b=6356755.2882m 扁 率α=1/298.257 3 参心空间直角坐标转换参心大地坐标 [ ] N B Y X H H e N Y X H N Z B X Y L -+= +-++==cos ))1(**)() (*arctan() arctan(2 22 2 2 二 高斯投影及高斯直角坐标系 1、高斯投影概述 高斯-克吕格投影的条件:1. 是正形投影;2. 中央子午线不变形 高斯投影的性质:1. 投影后角度不变;2. 长度比与点位有关,与方向无关; 3. 离中央子午线越远变形越大 为控制投影后的长度变形,采用分带投影的方法。常用3度带或6度带分带,城市或工程控制网坐标可采用不按3度带中央子午线的任意带。 2、高斯投影正算公式: 52224253 2236 425442232)5814185(cos 120 )1(cos 6 cos )5861(cos sin 720 495(cos sin 24cos sin 2l t t t B N l t B N Bl N y l t t B B N l t B B N Bl B N X x ηηηηη-++-++-+=+-+++-++ =) 3、高斯投影反算公式: 大地坐标和经纬度之间 的换算 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】 大地坐标和经纬度之间的换算 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为 Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可, 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是 经度/3得到的整数为三度带的分带号 经度/6得到的整数为六度带的分带号 其中的XP为地图上的Y坐标,记得在前面加上带号,其中的YP为地图上的X坐标 地理坐标系VS大地坐标系 winner发表于2008年12月22日 10:32 阅读(10) 评论(0) 分类:个人日记 举报 地理坐标转换到大地坐标的过程可理解为投影。(投影:将不规则的地球曲面转换为平面)在ArcGIS中预定义了两套坐标系: 地理坐标系(Geographic coordinate system) 投影坐标系(Projected coordinate system) 1、首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为地理坐标系统,是以经纬度为地图的存储单位的。很明显,Geographic coordinate system是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上,如何进行操作呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球上?这必然要求我们找到这样的一个椭球体。这样的椭球体具有特点:可以量化计算的。具有长半轴,短半轴,偏心率。以下几行便是Krasovsky_1940椭球及其相应参数。 Spheroid: Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening(扁率): 298.300000000000010000 然而有了这个椭球体以后还不够,还需要一个大地基准面将这个椭球定位。在坐标系统描述中,可以看到有这么一行: Datum: D_Beijing_1954 表示,大地基准面是D_Beijing_1954。 有了Spheroid和Datum两个基本条件,地理坐标系统便可以使用。 完整参数: Alias: Abbreviation: Remarks: Angular Unit: Degree (0.017453292519943299) Prime Meridian(起始经度): Greenwich (0.000000000000000000) Datum(大地基准面): D_Beijing_1954 Spheroid(参考椭球体): Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening: 298.300000000000010000 2、接下来便是Projection coordinate system(投影坐标系统),首先看看投影坐标系统中的一些参数。 利用MAPGIS制图软件换算大地坐标和经纬度 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,以下步骤请大家熟记: 一、大地座标→经纬度(地理坐标) 1、在文本文件中输入大地坐标数据,格式为Y空格X。 如下,原始的大地坐标由一个8位的Y和一个7位的X组成,“新建文本文档.txt -记事本”显示如下: 31560000 4503500 31565000 4503500 31565000 4507500 31568500 4507500 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉, 现在数据变为:Y—6位,X—7位。“新建文本文档.txt -记事本”显示如下: 560000 4503500 565000 4503500 565000 4507500 568500 4507500 保存这个TXT的文本文件。 2、打开MAPGIS,启动坐标投影变形程序 如果是MAPGIS6.7版,请选择“实用服务→投影变换系统→用户文件投影转换”→点击打开文件,打开刚才的大地坐标的文本文件。 “指定数据起始位置”中出现刚才的的文本文档,显示如下: 560000 4503500 565000 4503500 565000 4507500 568500 4507500 在设置用户文件选项中,一般选:按行读取数据,X→Y顺序,生成点。最后点击确定。3、设置输入数据的格式,点击用户投影参数,并完成设置。 坐标系类型——大地坐标系 投影类型——5:高斯克吕格投影 比例尺分母——1 椭球面高程——0 投影面高程——0 投影带类型——3度带或6度带 投影带序号——31 X,Y的平移均设0 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 接着为:设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成设置。 4、输入投影参数 坐标系类型——地理坐标系 我们输出的经纬度的单位应该是DDDMMMSS。SS注意点写到文件,保存就大功告成了,注意:保存的文件要写上.TXT的后缀 最后,在文本文件中计算出的结果如下: x= 560000 y= 4503500 xp=1234234.357 yp=403950.255 MAPGIS应用——大地坐标和经纬度之间的换算(2009-04-20 15:57:08) 标签:杂谈分类:学海无涯 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,我写一下一般的过程,希望对大家有点帮助. 大地座标-----→经纬度(地理坐标) 1,输入大地坐标数据,格式为 Y空格X,输入到文本就行 如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y(6位),X(7位)如下图: 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换——>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米。 填好了以后设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置: 我们输出的经纬度的单位应该是DDDMMMSS.SS注意点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234.357就是123度42分34.357秒, YP为纬度,403950.225就是40度39分50.255秒(纬度没有最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 这里面的数据前面的为经度,格式为DDDMMSS,后面的为纬度,格式为DDMMSS 接下来的转换过程和大地坐标转换一样,只要将刚才的用户转换参数和结果转换参数交换即可。 要注意分带号的确定,如果你不知道分带号,就应该先计算分带号,算法是: 经度/3得到的整数为三度带的分带号 WGS84经纬度坐标与北京54坐标或者西安80坐标的关系 WGS84经纬度坐标与北京54坐标或者西安80坐标的关系 2008-11-07 17:58 一般来讲,GPS直接提供的坐标(B,L,H)是1984年世界大地坐标系(Word Geodetic System 1984即WGS-84)的坐标,其中B为纬度,L为经度,H为大地高即是到WGS-84椭球面的高度。而在实际应用中,我国地图采用的是1954北京坐标系或者1980西安坐标系下的高斯投影坐标(x,y,),不过也有一些电子地图采用1954北京坐标系或者1980西安坐标系下的经纬度坐标(B,L),高程一般为海拔高度h。 GPS的测量结果与我国的54系或80系坐标相差几十米至一百多米,随区域不同,差别也不同,经粗落统计,我国西部相差70米左右,东北部140米左右,南部75米左右,中部45米左右。现就上述几种坐标系进行简单介绍,供大家参阅,并提供各坐标系的基本参数,以便大家在使用过程中自定义坐标系。 1、1984世界大地坐标系 WGS-84坐标系是美国国防部研制确定的大地坐标系,是一种协议地球坐标系。WGS-84坐标系的定义是:原点是地球的质心,空间直角坐标系的Z轴指向BIH(1984.0)定义的地极(CTP)方向,即国际协议原点CIO,它由IAU和IUGG共同推荐。X轴指向BIH定义的零度子午面和CTP赤道的交点,Y轴和Z,X轴构成右手坐标系。WGS-84椭球采用国际大地测量与地球物理联合会第17届大会测量常数推荐值,采用的两个常用基本几何参数: 长半轴a=6378137m;扁率f=1:298.257223563。 2、1954北京坐标系 1954北京坐标系是将我国大地控制网与前苏联1942年普尔科沃大地坐标系相联结后建立的我国过渡性大地坐标系。属于参心大地坐标系,采用了前苏联的克拉索夫斯基椭球体。其长半轴a=6378245,扁率f=1/298.3。1954年北京坐标系虽然是苏联1942年坐标系的延伸,但也还不能说它们完全相同。 3、1980西安坐标系 1978年,我国决定建立新的国家大地坐标系统,并且在新的大地坐标系统中进行全国天文大地网的整体平差,这个坐标系统定名为1980年西安坐标系。属参心大地坐标系。1980年西安坐标系Xi'an Geodetic Coordinate System 1980 采用1975国际椭球,以JYD 1968.0系统为椭球定向基准,大地原点设在陕西省泾阳县永乐镇,采用多点定位所建立的大地坐标系.其椭球参 经纬度坐标与大地坐标转换表 114114 114114 114114 114114 1 234.565411113.59429634.94836113.9953-0.0047334.42443113.590 15734.71231113.9838-0.0162334.420793114.21161134.7022114.35 450.35447534.562121114.21469534.93923114.3630.3630424卫星影像图脚点示意图3 弧度值 -8.261e-050.6988650.8196690.0045270.4884131.00452763852614. 59e-09-0.00028330.6927510.8220220.0045530.4799031.004553638 51785.42e-080.006186760.692490.8221220.0045540.4795421.0045 5463851752.59e-050.006336270.6986280.819760.0045280.4880811 .00452863852582.7e-05 x 0.5728380.32814332049.80123868932.999y-432.37585740.5694560 .3242832049.2823842744.937-1486.849820.5693110.32411532049. 25993841681.23932476.790980.5727070.32799432049.7813867979.经纬度坐标与大地坐标转换表28533166.52816 经纬度转换大地坐标api 经纬度地址解析 经纬度转换大地坐标api实现GPS/百度经纬度/谷歌经纬度解析成地理位置信息,查询位置信息。 接口名称:经纬度转换大地坐标api 接口平台:聚合数据 接口地址:https://www.360docs.net/doc/5b6626320.html,/geo/ 支持格式:JSON/XML 请求方式:GET 请求示例:https://www.360docs.net/doc/5b6626320.html,/geo/?key=您申请的APPKEY&lat=39.907314&lng=116.391279&type=1 接口备注:实现GPS/百度经纬度/谷歌经纬度解析成地理位置信息 经纬度转换大地坐标api调用代码JSON返回示例: { "resultcode":"200", "reason":"Successed!", "result":{ "lat":"39.915065193348", "lng":"116.40389843345", "type":"1", "address":"北京市东城区中华路甲10号", "business":"天某门", "citycode":131 } } 经纬度转换大地坐标api调用代码XML返回示例: CGCS2000 –China Geodetic Coordinate System 2000 附件: 现有测绘成果转换到2000国家大地坐标系 技术指南 一、2000国家大地坐标系的定义 国家大地坐标系的定义包括坐标系的原点、三个坐标轴的指向、尺度以及地球椭球的4个基本参数的定义。2000国家大地坐标系的原点为包括海洋和大气的整个地球的质量中心;2000国家大地坐标系的Z轴由原点指向历元2000.0的地球参考极的方向,该历元的指向由国际时间局给定的历元为1984.0的初始指向推算,定向的时间演化保证相对于地壳不产生残余的全球旋转,X轴由原点指向格林尼治参考子午线与地球赤道面(历元2000.0)的交点,Y轴与Z轴、X轴构成右手正交坐标系。采用广义相对论意义下的尺度。2000国家大地坐标系采用的地球椭球参数的数值为: 长半轴a=6378137m 扁率f=1/298.257222101 地心引力常数GM=3.986004418×1014m3s-2 自转角速度ω=7.292l15×10-5rad s-1其它参数见下表: 采用2000国家大地坐标系后仍采用无潮汐系统。 二、点位坐标转换方法 (一)模型选择 全国及省级范围的坐标转换选择二维七参数转换模型;省级以下的坐标转换可选择三维四参数模型或平面四参数模型。对于相对独立的平面坐标系统与2000国家大地坐标系的联系可采用平面四参数模型或多项式回归模型。坐标转换模型详见本指南第六部分。 (二)重合点选取 坐标重合点可采用在两个坐标系下均有坐标成果的点。但最终重合点还需根据所确定的转换参数,计算重合点坐标残差,根据其残差值的大小来确定,若残差大于3倍中误差则剔除,重新计算坐标转换参数,直到满足精度要求为止;用于计算转换参数的重合点数量与转换区域的大小有关,但不得少于5个。 (三)模型参数计算 用所确定的重合点坐标,根据坐标转换模型利用最小二乘法计算模型参数。 (四)精度评估与检核 用上述模型进行坐标转换时必须满足相应的精度指标,具体精度评估指标及评估方法见附件中相关内容。选择部分重合 地理坐标系与大地坐标系 地理坐标:为球面坐标。参考平面地是椭球面。坐标单位:经纬度 大地坐标:为平面坐标。参考平面地是水平面。坐标单位:米、千米等。 地理坐标转换到大地坐标的过程可理解为投影。(投影:将不规则的地球曲面转换为平面) 在ArcGIS中预定义了两套坐标系:地理坐标系(Geographic coordinate system)投影坐标系(Projected coordinate system), 1、首先理解地理坐标系(Geographic coordinate system), Geographic coordinate system直译为地理坐标系统,是以经纬度为地图的存储单位的。很明显,Geographic coordinate system是球面坐标系统。我们要将地球上的数字化信息存放到球面坐标系统上,如何进行操作呢?地球是一个不规则的椭球,如何将数据信息以科学的方法存放到椭球上?这必然要求我们找到这样的一个椭球体。这样的椭球体具有特点:可以量化计算的。具有长半轴,短半轴,偏心率。以下几行便是Krasovsky_1940椭球及其相应参数。 Spheroid: Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening(扁率): 298.300000000000010000 然而有了这个椭球体以后还不够,还需要一个大地基准面将这个椭球定位。在坐标系统描述中,可以看到有这么一行: Datum: D_Beijing_1954 表示,大地基准面是D_Beijing_1954。 -------------------------------------------------------------------------------- 有了Spheroid和Datum两个基本条件,地理坐标系统便可以使用。 完整参数: Alias: Abbreviation: Remarks: Angular Unit: Degree (0.017453292519943299) Prime Meridian(起始经度): Greenwich (0.000000000000000000) Datum(大地基准面): D_Beijing_1954 Spheroid(参考椭球体): Krasovsky_1940 Semimajor Axis: 6378245.000000000000000000 Semiminor Axis: 6356863.018773047300000000 Inverse Flattening: 298.300000000000010000 2、接下来便是Projection coordinate system(投影坐标系统),首先看看投影坐标系统中的一些参数。 Projection: Gauss_Kruger Parameters: False_Easting: 500000.000000 地质工作中常要对进行大地坐标转经纬度和经纬度换大地坐标,以下步骤请大家熟记: 一、大地坐标→经纬度(地理坐标) 1、在文本文件中输入大地坐标数据,格式为Y空格X。 如下,原始的大地坐标由一个8位的Y和一个7位的X组成,“新建文本文档.txt -记事本”显示如下: 31560000 4503500 31565000 4503500 31565000 4507500 31568500 4507500 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为:Y—6位,X—7位。“新建文本文档.txt -记事本”显示如下:560000 4503500 565000 4503500 565000 4507500 568500 4507500 保存这个TXT的文本文件。 2、打开MAPGIS,启动坐标投影变形程序 如果是MAPGIS6.7版,请选择“实用服务→投影变换→P投影变换→U用户文件投影转换”→点击打开文件,打开刚才的大地坐标的文本文件。 “指定数据起始位置”中出现刚才的的文本文档,显示如下: 560000 4503500 565000 4503500 565000 4507500 568500 4507500 在设置用户文件选项中,一般选:按行读取数据,X→Y顺序,生成点。最后点击确定。 3、设置输入数据的格式,点击用户投影参数,并完成设置。 坐标系类型——大地坐标系 投影类型——5:高斯克吕格投影 比例尺分母——1 椭球面高程——0 投影面高程——0 投影带类型——3度带或6度带 投影带序号——31 X,Y的平移均设0 这里我们的大地坐标为3度带的第31带,注意填好,坐标单位为米 大地坐标和经纬度之间的换算 大地坐标-----→经纬度(地理坐标) 1、输入大地坐标数据,格式为Y空格X,输入到文本就行如下,原始的大地坐标由一8位的Y和一个7位的X组成, 这组坐标数据中的Y的前两位为31,是分带号,一般使用的分带有三分带,六分带,这里的坐标是三分带的,记下Y前的这两位数,在原始数据中去除掉,现在数据变为,Y,6位,X,7位 保存这个TXT的文本文件。 2,打开MAPGIS,启动坐标投影变形程序 接下来选择投影转换>>>>用户文件投影转换 点打开文件,打开刚才的大地坐标的文本文件, 设置输入数据的格式,点击用户投影参数,并完成设置。 这里我们的大地座标为3度带的第31带,注意填好,坐标单位为米 好了以为设置输出的格式,我们要求输出的是经纬度,点结果转换参数,完成以下设置 这个参数设置里第一行有一个很重要的参数,椭球参数这一项,很多博友没有到正确的结果就是因为该项参数没有设定,中国地图一般只有两种,一种是北京54,还有就是80黄海 正确设定好这个就能得到正确的结果啦,笔者用的是80黄海的参考椭球,不过 中国大部分是用54坐标系的!!! 我们输出的经纬度的单位应该是DDDMMMSS。SS注意 点写到文件,保存就大功告成了,注意保存的文件要写上.TXT的后缀 下面是计算出的结果文件 XP为经度,1234234。357就是123度42分34。357秒, YP为纬度,403950。225就是40度39分50。255秒(纬度最多90,所以没有三位数) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 经纬度——→大地座标 输入文件格式如下, 坐标转换从经纬度坐标到大地坐标及源码 利用网络上开源的资料,可以很容易的实现从经纬度坐标向各种投影坐标的转换,美国地质调查局开发USGS的GCTP就是很好的东西之一,有C语言版本的支持各种投影类型的源代码,比如UNIVERSAL TRANSVERSE MERCATOR, ALBERS CONICAL EQUAL AREA ,LAMBERT CONFORMAL CONIC等等,我们机房使用的就是LAMBERT CONFORMAL CONIC(LAMBERT 圆锥等角投影),利用GCTP提供的源代码详见source文件夹下的lamccfor.c 和lamccinv.c ,可以轻松实现经纬度投影坐标和LAMBERT CONFORMAL CONIC坐标的相互转化,其他投影方式使用的比较少,还要进一步研究,就以后在写了. lamccforint函数设置LAMBERT CONFORMAL CONIC投影的各个参数,比如长半轴,短半轴,中心点经纬度坐标,标准纬线等等信息. long lamccforint(r_maj,r_min,lat1,lat2,c_lon,c_lat,false_east,false_north) double r_maj; /* majoraxis */ double r_min; /* minoraxis */ double lat1; /* first standard parallel */ double lat2; /* second standard parallel */ double c_lon; /* center longitude */ double c_lat; /* center latitude */ double false_east; /* x offset in meters */ double false_north; /* y offset in meters */ { double sin_po; /* sin value */ double cos_po; /* cos大地坐标和经纬度之间的换算-经纬度算坐标
大地坐标与直角空间坐标转换计算公式
大地坐标和经纬度之间的换算完整版
地理坐标系和大地坐标系
利用MAPGIS制图软件换算大地坐标和经纬度
大地坐标和经纬度之间的换算
WGS84经纬度坐标与北京54坐标或者西安80坐标的关系
经纬度坐标与大地坐标转换表
经纬度转换大地坐标api 经纬度地址解析
2000大地坐标系转换技术指南.
地理坐标系与大地坐标系
大地坐标转经纬度和经纬度换大地坐标
MAPGIS大地坐标和经纬度之间的换算
坐标转换从经纬度坐标到大地坐标及源码