run!
This commit is contained in:
parent
c21bdac083
commit
c80858888e
1676
brmu1360.19n
Normal file
1676
brmu1360.19n
Normal file
File diff suppressed because it is too large
Load Diff
@ -4,7 +4,7 @@ import socket
|
||||
import struct
|
||||
import time
|
||||
import web
|
||||
HOST = '127.0.0.1'
|
||||
HOST = 'localhost'
|
||||
PORT = 5678
|
||||
BUFFSIZE = 1024
|
||||
ADDR = ( HOST, PORT )
|
||||
|
Binary file not shown.
@ -14,6 +14,7 @@
|
||||
<link rel="stylesheet" href="./jqueryui.css">
|
||||
<script src="./jquery.js"></script>
|
||||
<script src="./jqueryui.js"></script>
|
||||
<script src="./index.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
@ -23,10 +24,15 @@
|
||||
<div style="width:800px;height:600px;border:#ccc solid 1px;" id="dituContent"></div>
|
||||
<br>
|
||||
高度:<br>
|
||||
<div id="slider"></div></div>
|
||||
<div id="slider"></div>
|
||||
速度:<br>
|
||||
<div id="slider-speed"></div><br>
|
||||
</div>
|
||||
<br>
|
||||
<br><br>
|
||||
位置:(lat,lon,hgt)
|
||||
<p id="pp"></p>
|
||||
<button onclick="start()">START</button>
|
||||
</center>
|
||||
</body>
|
||||
<script type="text/javascript">
|
||||
@ -49,7 +55,7 @@
|
||||
function setMapEvent(){
|
||||
map.enableDragging();//启用地图拖拽事件,默认启用(可不写)
|
||||
map.enableScrollWheelZoom();//启用地图滚轮放大缩小
|
||||
map.enableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
|
||||
map.disableDoubleClickZoom();//启用鼠标双击放大,默认启用(可不写)
|
||||
map.enableKeyboard();//启用键盘上下左右键移动地图
|
||||
}
|
||||
|
||||
@ -64,18 +70,77 @@
|
||||
map.addControl(ctrl_sca);
|
||||
}
|
||||
|
||||
var lat=39;
|
||||
var lon=116;
|
||||
var hgt=100
|
||||
var lat=39.0;
|
||||
var lon=116.0;
|
||||
var hgt=100.0;
|
||||
var points=[];
|
||||
var d2m=2*Math.PI*6371000/360;
|
||||
function d2l(a){//degree to linear
|
||||
return {x:a.lon*d2m,y:a.lat*d2m,z:a.alt};
|
||||
}
|
||||
function l2d(a){
|
||||
return {lon:a.x/d2m,lat:a.y/d2m,alt:a.z};
|
||||
}
|
||||
function ladd(a,b){//linear substrate
|
||||
return {x:a.x+b.x,y:a.y+b.y,z:a.z+b.z};
|
||||
}
|
||||
function lsub(a,b){
|
||||
return {x:a.x-b.x,y:a.y-b.y,z:a.z-b.z};
|
||||
}
|
||||
function lmul(a,b){
|
||||
return {x:a.x*b,y:a.y*b,z:a.z*b};
|
||||
}
|
||||
|
||||
|
||||
function ll(a){
|
||||
return Math.sqrt(a.x*a.x+a.y*a.y+a.z*a.z);
|
||||
}
|
||||
function norm(l){
|
||||
var lll=ll(l);
|
||||
return {x:l.x/lll,y:l.y/lll,z:l.z/lll};
|
||||
}
|
||||
var lt=0;
|
||||
var st=0;
|
||||
var pos=d2l({lon:139,lat:32,alt:10});
|
||||
var des=pos;
|
||||
var vec={x:0,y:0,z:0};
|
||||
var lines=[];
|
||||
|
||||
initMap();//创建和初始化地图
|
||||
var mainmarker = new BMap.Marker(new BMap.Point(lon,lat));
|
||||
var mlabel = new BMap.Label("main",{offset:new BMap.Size(20,-10)});
|
||||
map.addOverlay(mainmarker);
|
||||
mainmarker.setLabel(mlabel);
|
||||
map.addEventListener("click",function(e){
|
||||
lat=e.point.lat;
|
||||
lon=e.point.lng;
|
||||
des=d2l({lon:e.point.lng,lat:e.point.lat,alt:20});
|
||||
vec=norm(lsub(des,pos));
|
||||
console.log(e.point.lng+","+e.point.lat);
|
||||
});
|
||||
map.addEventListener("dblclick",function(e){
|
||||
pos=d2l({lon:e.point.lng,lat:e.point.lat,alt:20});
|
||||
console.log(e.point.lng+","+e.point.lat);
|
||||
});
|
||||
function post(){
|
||||
hgt=$("#slider").slider("value");
|
||||
|
||||
//hgt=$("#slider").slider("value");
|
||||
if(ll(lsub(des,pos))>=10){
|
||||
map.clearOverlays();
|
||||
pos=ladd(pos,lmul(vec,$("#slider-speed").slider("value")/10))
|
||||
lonb=l2d(pos).lon;
|
||||
latb=l2d(pos).lat;
|
||||
alt=l2d(pos).alt;
|
||||
var gcj = coordtransform.bd09togcj02(lonb,latb);
|
||||
var wgs = coordtransform.gcj02towgs84(gcj[0],gcj[1]);
|
||||
lon=wgs[0];
|
||||
lat=wgs[1];
|
||||
//mainmarker.setPosition(new BMap.Point(lon,lat));
|
||||
marker = new BMap.Marker(new BMap.Point(lonb,latb));
|
||||
map.addOverlay(marker);
|
||||
//console.log(lon+","+lat);
|
||||
}
|
||||
$("#pp").html("lon:"+lon+" lat:"+lat+" hgt:"+hgt+"spd:"+$("#slider-speed").slider("value")/10);
|
||||
$.post("/post",{"lon":lon,"lat":lat,"hgt":hgt});
|
||||
$("#pp").html("lon:"+lon+" lat:"+lat+" hgt:"+hgt);
|
||||
$("#pp").html("lon:"+lon+" lat:"+lat+" hgt:"+hgt+"spd:"+$("#slider-speed").slider("value")/10);
|
||||
}
|
||||
$(function() {
|
||||
$( "#slider" ).slider({
|
||||
@ -83,6 +148,11 @@
|
||||
max: 8848,
|
||||
value: 10,
|
||||
});
|
||||
$( "#slider-speed" ).slider({
|
||||
min: 0,
|
||||
max: 100,
|
||||
value: 0,
|
||||
});
|
||||
setInterval(post,100);
|
||||
});
|
||||
</script>
|
||||
|
153
mapserver/static/index.js
Normal file
153
mapserver/static/index.js
Normal file
@ -0,0 +1,153 @@
|
||||
/**
|
||||
* Created by Wandergis on 2015/7/8.
|
||||
* 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
|
||||
*/
|
||||
//UMD魔法代码
|
||||
// if the module has no dependencies, the above pattern can be simplified to
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define([], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node. Does not work with strict CommonJS, but
|
||||
// only CommonJS-like environments that support module.exports,
|
||||
// like Node.
|
||||
module.exports = factory();
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
root.coordtransform = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
//定义一些常量
|
||||
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
|
||||
var PI = 3.1415926535897932384626;
|
||||
var a = 6378245.0;
|
||||
var ee = 0.00669342162296594323;
|
||||
/**
|
||||
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
|
||||
* 即 百度 转 谷歌、高德
|
||||
* @param bd_lon
|
||||
* @param bd_lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var bd09togcj02 = function bd09togcj02(bd_lon, bd_lat) {
|
||||
var bd_lon = +bd_lon;
|
||||
var bd_lat = +bd_lat;
|
||||
var x = bd_lon - 0.0065;
|
||||
var y = bd_lat - 0.006;
|
||||
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
|
||||
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);
|
||||
var gg_lng = z * Math.cos(theta);
|
||||
var gg_lat = z * Math.sin(theta);
|
||||
return [gg_lng, gg_lat]
|
||||
};
|
||||
|
||||
/**
|
||||
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
|
||||
* 即谷歌、高德 转 百度
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var gcj02tobd09 = function gcj02tobd09(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
|
||||
var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
|
||||
var bd_lng = z * Math.cos(theta) + 0.0065;
|
||||
var bd_lat = z * Math.sin(theta) + 0.006;
|
||||
return [bd_lng, bd_lat]
|
||||
};
|
||||
|
||||
/**
|
||||
* WGS84转GCj02
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var wgs84togcj02 = function wgs84togcj02(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
if (out_of_china(lng, lat)) {
|
||||
return [lng, lat]
|
||||
} else {
|
||||
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
||||
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
||||
var radlat = lat / 180.0 * PI;
|
||||
var magic = Math.sin(radlat);
|
||||
magic = 1 - ee * magic * magic;
|
||||
var sqrtmagic = Math.sqrt(magic);
|
||||
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
|
||||
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
|
||||
var mglat = lat + dlat;
|
||||
var mglng = lng + dlng;
|
||||
return [mglng, mglat]
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* GCJ02 转换为 WGS84
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var gcj02towgs84 = function gcj02towgs84(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
if (out_of_china(lng, lat)) {
|
||||
return [lng, lat]
|
||||
} else {
|
||||
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
||||
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
||||
var radlat = lat / 180.0 * PI;
|
||||
var magic = Math.sin(radlat);
|
||||
magic = 1 - ee * magic * magic;
|
||||
var sqrtmagic = Math.sqrt(magic);
|
||||
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
|
||||
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
|
||||
var mglat = lat + dlat;
|
||||
var mglng = lng + dlng;
|
||||
return [lng * 2 - mglng, lat * 2 - mglat]
|
||||
}
|
||||
};
|
||||
|
||||
var transformlat = function transformlat(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
|
||||
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
|
||||
ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
|
||||
return ret
|
||||
};
|
||||
|
||||
var transformlng = function transformlng(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
|
||||
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
|
||||
ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
|
||||
return ret
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否在国内,不在国内则不做偏移
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {boolean}
|
||||
*/
|
||||
var out_of_china = function out_of_china(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
// 纬度3.86~53.55,经度73.66~135.05
|
||||
return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55);
|
||||
};
|
||||
|
||||
return {
|
||||
bd09togcj02: bd09togcj02,
|
||||
gcj02tobd09: gcj02tobd09,
|
||||
wgs84togcj02: wgs84togcj02,
|
||||
gcj02towgs84: gcj02towgs84
|
||||
}
|
||||
}));
|
17
mapserver/static/node_modules/coordtransform/.gitattributes
generated
vendored
Normal file
17
mapserver/static/node_modules/coordtransform/.gitattributes
generated
vendored
Normal file
@ -0,0 +1,17 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text=auto
|
||||
|
||||
# Custom for Visual Studio
|
||||
*.cs diff=csharp
|
||||
|
||||
# Standard to msysgit
|
||||
*.doc diff=astextplain
|
||||
*.DOC diff=astextplain
|
||||
*.docx diff=astextplain
|
||||
*.DOCX diff=astextplain
|
||||
*.dot diff=astextplain
|
||||
*.DOT diff=astextplain
|
||||
*.pdf diff=astextplain
|
||||
*.PDF diff=astextplain
|
||||
*.rtf diff=astextplain
|
||||
*.RTF diff=astextplain
|
75
mapserver/static/node_modules/coordtransform/.npmignore
generated
vendored
Normal file
75
mapserver/static/node_modules/coordtransform/.npmignore
generated
vendored
Normal file
@ -0,0 +1,75 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directory
|
||||
# Commenting this out is preferred by some people, see
|
||||
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git-
|
||||
node_modules
|
||||
|
||||
# Users Environment Variables
|
||||
.lock-wscript
|
||||
|
||||
# =========================
|
||||
# Operating System Files
|
||||
# =========================
|
||||
|
||||
# OSX
|
||||
# =========================
|
||||
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
|
||||
# Thumbnails
|
||||
._*
|
||||
|
||||
# Files that might appear on external disk
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
|
||||
# Directories potentially created on remote AFP share
|
||||
.AppleDB
|
||||
.AppleDesktop
|
||||
Network Trash Folder
|
||||
Temporary Items
|
||||
.apdisk
|
||||
|
||||
# Windows
|
||||
# =========================
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Windows Installer files
|
||||
*.cab
|
||||
*.msi
|
||||
*.msm
|
||||
*.msp
|
||||
|
||||
# Windows shortcuts
|
||||
*.lnk
|
22
mapserver/static/node_modules/coordtransform/LICENSE
generated
vendored
Normal file
22
mapserver/static/node_modules/coordtransform/LICENSE
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 记忆的残骸
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
130
mapserver/static/node_modules/coordtransform/README.md
generated
vendored
Normal file
130
mapserver/static/node_modules/coordtransform/README.md
generated
vendored
Normal file
@ -0,0 +1,130 @@
|
||||
# coordtransform 坐标转换
|
||||
****
|
||||
一个提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具模块。
|
||||
|
||||
python版本:https://github.com/wandergis/coordTransform_py
|
||||
|
||||
命令行版本:https://github.com/wandergis/coordtransform-cli
|
||||
****
|
||||
## **支持node、浏览器(AMD方式和直接引用方式)**
|
||||
- GitHub地址:https://github.com/wandergis/coordtransform
|
||||
- npm地址:https://www.npmjs.com/package/coordtransform
|
||||
- 项目主页:http://wandergis.github.io/coordtransform/
|
||||
|
||||
## 为什么写这个模块
|
||||
|
||||
随着移动互联网的兴起,几乎每一个app都会去收集用户位置,如果恰好你在处理与地理定位相关的代码,并且不了解地理坐标系的话,肯定要被我大天朝各种坐标系搞晕。写这个模块的目的也是因为项目中app获取的坐标是百度sdk获取的,在做webgis可视化的时候各种偏,各种坐标不对,叠加错位。
|
||||
|
||||
## 当前互联网地图的坐标系现状
|
||||
### 地球坐标 (WGS84)
|
||||
- 国际标准,从 GPS 设备中取出的数据的坐标系
|
||||
- 国际地图提供商使用的坐标系
|
||||
|
||||
### 火星坐标 (GCJ-02)也叫国测局坐标系
|
||||
- 中国标准,从国行移动设备中定位获取的坐标数据使用这个坐标系
|
||||
- 国家规定: 国内出版的各种地图系统(包括电子形式),必须至少采用GCJ-02对地理位置进行首次加密。
|
||||
|
||||
###百度坐标 (BD-09)
|
||||
- 百度标准,百度 SDK,百度地图,Geocoding 使用
|
||||
- (本来就乱了,百度又在火星坐标上来个二次加密)
|
||||
|
||||
## 开发过程需要注意的事
|
||||
- 从设备获取经纬度(GPS)坐标
|
||||
|
||||
如果使用的是百度sdk那么可以获得百度坐标(bd09)或者火星坐标(GCJ02),默认是bd09
|
||||
如果使用的是ios的原生定位库,那么获得的坐标是WGS84
|
||||
如果使用的是高德sdk,那么获取的坐标是GCJ02
|
||||
- 互联网在线地图使用的坐标系
|
||||
|
||||
火星坐标系:
|
||||
iOS 地图(其实是高德)
|
||||
Google国内地图(.cn域名下)
|
||||
搜搜、阿里云、高德地图、腾讯
|
||||
百度坐标系:
|
||||
当然只有百度地图
|
||||
WGS84坐标系:
|
||||
国际标准,谷歌国外地图、osm地图等国外的地图一般都是这个
|
||||
# 举个例子
|
||||
笔者所在的公司app使用的是百度的sdk,需要对定位坐标做web可视化效果,百度地图提供的js api满足不了需求,选用leaflet来做可视化,这里要说到百度地图了,它使用的坐标系和切图的原点都不一致,并且其加偏还是非线性的,因此无法利用常用的加载方法去加载,放弃使用它的底图,选用了符合标准的高德底图,高德底图使用的是国测局坐标也就是GCJ02坐标系,如果简单的将app获取的经纬度叠加上去,就有可能你本来在百度大厦的位置就显示在西二旗地铁站了甚至更远,因此需要将bd09转成gcj02坐标系,这个时候这个库就有了用武之地,对点批量转换再加载到底图上,就可以让点显示在本应该出现的位置。
|
||||
|
||||
另外如果你拿到了一些WGS84的坐标,想加载到各种底图上就可以根据这个库在底图坐标系和你的数据坐标系之间进行转换。希望对大家有用吧。
|
||||
|
||||
****
|
||||
|
||||
|
||||
### 安装(install)
|
||||
|
||||
```
|
||||
npm install coordtransform
|
||||
```
|
||||
|
||||
|
||||
### 示例用法(Example&Usage)
|
||||
1 NodeJs用法
|
||||
|
||||
```
|
||||
//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
|
||||
var coordtransform=require('coordtransform');
|
||||
//百度经纬度坐标转国测局坐标
|
||||
var bd09togcj02=coordtransform.bd09togcj02(116.404, 39.915);
|
||||
//国测局坐标转百度经纬度坐标
|
||||
var gcj02tobd09=coordtransform.gcj02tobd09(116.404, 39.915);
|
||||
//wgs84转国测局坐标
|
||||
var wgs84togcj02=coordtransform.wgs84togcj02(116.404, 39.915);
|
||||
//国测局坐标转wgs84坐标
|
||||
var gcj02towgs84=coordtransform.gcj02towgs84(116.404, 39.915);
|
||||
console.log(bd09togcj02);
|
||||
console.log(gcj02tobd09);
|
||||
console.log(wgs84togcj02);
|
||||
console.log(gcj02towgs84);
|
||||
//result
|
||||
//bd09togcj02: [ 116.39762729119315, 39.90865673957631 ]
|
||||
//gcj02tobd09: [ 116.41036949371029, 39.92133699351021 ]
|
||||
//wgs84togcj02: [ 116.41024449916938, 39.91640428150164 ]
|
||||
//gcj02towgs84: [ 116.39775550083061, 39.91359571849836 ]
|
||||
```
|
||||
2 浏览器用法
|
||||
直接引用目录内的index.js,会有一个coordtransform的全局对象暴露出来,也支持用AMD加载器加载
|
||||
|
||||
```
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>coordTransform</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>请按F12打开控制台查看结果</h1>
|
||||
<script src="index.js"></script>
|
||||
<script>
|
||||
//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
|
||||
//百度经纬度坐标转国测局坐标
|
||||
var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
|
||||
//国测局坐标转百度经纬度坐标
|
||||
var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
|
||||
//wgs84转国测局坐标
|
||||
var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
|
||||
//国测局坐标转wgs84坐标
|
||||
var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
|
||||
console.log(bd09togcj02);
|
||||
console.log(gcj02tobd09);
|
||||
console.log(wgs84togcj02);
|
||||
console.log(gcj02towgs84);
|
||||
//result
|
||||
//bd09togcj02: [ 116.39762729119315, 39.90865673957631 ]
|
||||
//gcj02tobd09: [ 116.41036949371029, 39.92133699351021 ]
|
||||
//wgs84togcj02: [ 116.41024449916938, 39.91640428150164 ]
|
||||
//gcj02towgs84: [ 116.39775550083061, 39.91359571849836 ]
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
### todos
|
||||
- 墨卡托坐标
|
||||
- geojson转换
|
||||
- 批量转换
|
||||
- turf插件
|
||||
- leaflet插件
|
||||
|
||||
### sometipes
|
||||
对于做GIS的人来说,底图对我们还是很重要的,有时候看国外的底图很好看,换上之后发现坐标位置全部不对,因此写了这个包帮助大家完成坐标的转换,也准备写成一个leaflet的扩展,方便大家的使用,喜欢的童鞋请star,O(∩_∩)O
|
153
mapserver/static/node_modules/coordtransform/index.js
generated
vendored
Normal file
153
mapserver/static/node_modules/coordtransform/index.js
generated
vendored
Normal file
@ -0,0 +1,153 @@
|
||||
/**
|
||||
* Created by Wandergis on 2015/7/8.
|
||||
* 提供了百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
|
||||
*/
|
||||
//UMD魔法代码
|
||||
// if the module has no dependencies, the above pattern can be simplified to
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
// AMD. Register as an anonymous module.
|
||||
define([], factory);
|
||||
} else if (typeof module === 'object' && module.exports) {
|
||||
// Node. Does not work with strict CommonJS, but
|
||||
// only CommonJS-like environments that support module.exports,
|
||||
// like Node.
|
||||
module.exports = factory();
|
||||
} else {
|
||||
// Browser globals (root is window)
|
||||
root.coordtransform = factory();
|
||||
}
|
||||
}(this, function () {
|
||||
//定义一些常量
|
||||
var x_PI = 3.14159265358979324 * 3000.0 / 180.0;
|
||||
var PI = 3.1415926535897932384626;
|
||||
var a = 6378245.0;
|
||||
var ee = 0.00669342162296594323;
|
||||
/**
|
||||
* 百度坐标系 (BD-09) 与 火星坐标系 (GCJ-02)的转换
|
||||
* 即 百度 转 谷歌、高德
|
||||
* @param bd_lon
|
||||
* @param bd_lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var bd09togcj02 = function bd09togcj02(bd_lon, bd_lat) {
|
||||
var bd_lon = +bd_lon;
|
||||
var bd_lat = +bd_lat;
|
||||
var x = bd_lon - 0.0065;
|
||||
var y = bd_lat - 0.006;
|
||||
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_PI);
|
||||
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_PI);
|
||||
var gg_lng = z * Math.cos(theta);
|
||||
var gg_lat = z * Math.sin(theta);
|
||||
return [gg_lng, gg_lat]
|
||||
};
|
||||
|
||||
/**
|
||||
* 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换
|
||||
* 即谷歌、高德 转 百度
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var gcj02tobd09 = function gcj02tobd09(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var z = Math.sqrt(lng * lng + lat * lat) + 0.00002 * Math.sin(lat * x_PI);
|
||||
var theta = Math.atan2(lat, lng) + 0.000003 * Math.cos(lng * x_PI);
|
||||
var bd_lng = z * Math.cos(theta) + 0.0065;
|
||||
var bd_lat = z * Math.sin(theta) + 0.006;
|
||||
return [bd_lng, bd_lat]
|
||||
};
|
||||
|
||||
/**
|
||||
* WGS84转GCj02
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var wgs84togcj02 = function wgs84togcj02(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
if (out_of_china(lng, lat)) {
|
||||
return [lng, lat]
|
||||
} else {
|
||||
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
||||
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
||||
var radlat = lat / 180.0 * PI;
|
||||
var magic = Math.sin(radlat);
|
||||
magic = 1 - ee * magic * magic;
|
||||
var sqrtmagic = Math.sqrt(magic);
|
||||
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
|
||||
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
|
||||
var mglat = lat + dlat;
|
||||
var mglng = lng + dlng;
|
||||
return [mglng, mglat]
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* GCJ02 转换为 WGS84
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {*[]}
|
||||
*/
|
||||
var gcj02towgs84 = function gcj02towgs84(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
if (out_of_china(lng, lat)) {
|
||||
return [lng, lat]
|
||||
} else {
|
||||
var dlat = transformlat(lng - 105.0, lat - 35.0);
|
||||
var dlng = transformlng(lng - 105.0, lat - 35.0);
|
||||
var radlat = lat / 180.0 * PI;
|
||||
var magic = Math.sin(radlat);
|
||||
magic = 1 - ee * magic * magic;
|
||||
var sqrtmagic = Math.sqrt(magic);
|
||||
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI);
|
||||
dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI);
|
||||
var mglat = lat + dlat;
|
||||
var mglng = lng + dlng;
|
||||
return [lng * 2 - mglng, lat * 2 - mglat]
|
||||
}
|
||||
};
|
||||
|
||||
var transformlat = function transformlat(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng));
|
||||
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(lat * PI) + 40.0 * Math.sin(lat / 3.0 * PI)) * 2.0 / 3.0;
|
||||
ret += (160.0 * Math.sin(lat / 12.0 * PI) + 320 * Math.sin(lat * PI / 30.0)) * 2.0 / 3.0;
|
||||
return ret
|
||||
};
|
||||
|
||||
var transformlng = function transformlng(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
var ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng));
|
||||
ret += (20.0 * Math.sin(6.0 * lng * PI) + 20.0 * Math.sin(2.0 * lng * PI)) * 2.0 / 3.0;
|
||||
ret += (20.0 * Math.sin(lng * PI) + 40.0 * Math.sin(lng / 3.0 * PI)) * 2.0 / 3.0;
|
||||
ret += (150.0 * Math.sin(lng / 12.0 * PI) + 300.0 * Math.sin(lng / 30.0 * PI)) * 2.0 / 3.0;
|
||||
return ret
|
||||
};
|
||||
|
||||
/**
|
||||
* 判断是否在国内,不在国内则不做偏移
|
||||
* @param lng
|
||||
* @param lat
|
||||
* @returns {boolean}
|
||||
*/
|
||||
var out_of_china = function out_of_china(lng, lat) {
|
||||
var lat = +lat;
|
||||
var lng = +lng;
|
||||
// 纬度3.86~53.55,经度73.66~135.05
|
||||
return !(lng > 73.66 && lng < 135.05 && lat > 3.86 && lat < 53.55);
|
||||
};
|
||||
|
||||
return {
|
||||
bd09togcj02: bd09togcj02,
|
||||
gcj02tobd09: gcj02tobd09,
|
||||
wgs84togcj02: wgs84togcj02,
|
||||
gcj02towgs84: gcj02towgs84
|
||||
}
|
||||
}));
|
54
mapserver/static/node_modules/coordtransform/package.json
generated
vendored
Normal file
54
mapserver/static/node_modules/coordtransform/package.json
generated
vendored
Normal file
@ -0,0 +1,54 @@
|
||||
{
|
||||
"_from": "coordtransform",
|
||||
"_id": "coordtransform@2.1.2",
|
||||
"_inBundle": false,
|
||||
"_integrity": "sha1-CQNJzWKx3AX65HspG/nwt86Cf2Y=",
|
||||
"_location": "/coordtransform",
|
||||
"_phantomChildren": {},
|
||||
"_requested": {
|
||||
"type": "tag",
|
||||
"registry": true,
|
||||
"raw": "coordtransform",
|
||||
"name": "coordtransform",
|
||||
"escapedName": "coordtransform",
|
||||
"rawSpec": "",
|
||||
"saveSpec": null,
|
||||
"fetchSpec": "latest"
|
||||
},
|
||||
"_requiredBy": [
|
||||
"#USER",
|
||||
"/"
|
||||
],
|
||||
"_resolved": "https://registry.npmjs.org/coordtransform/-/coordtransform-2.1.2.tgz",
|
||||
"_shasum": "090349cd62b1dc05fae47b291bf9f0b7ce827f66",
|
||||
"_spec": "coordtransform",
|
||||
"_where": "/home/gym/下载/gps-sdr-sim-realtime/mapserver/static",
|
||||
"author": {
|
||||
"name": "wandergis"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://github.com/wandergis/coordtransform/issues"
|
||||
},
|
||||
"bundleDependencies": false,
|
||||
"deprecated": false,
|
||||
"description": "A common coordinate systems conversion module!",
|
||||
"homepage": "http://wandergis.github.io/coordtransform",
|
||||
"keywords": [
|
||||
"coordinate",
|
||||
"wgs84",
|
||||
"bd09",
|
||||
"gcj02",
|
||||
"transform"
|
||||
],
|
||||
"license": "MIT",
|
||||
"main": "index.js",
|
||||
"name": "coordtransform",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://wandergis@github.com/wandergis/coordtransform.git"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "node test/app.js"
|
||||
},
|
||||
"version": "2.1.2"
|
||||
}
|
22
mapserver/static/node_modules/coordtransform/test/app.js
generated
vendored
Normal file
22
mapserver/static/node_modules/coordtransform/test/app.js
generated
vendored
Normal file
@ -0,0 +1,22 @@
|
||||
/**
|
||||
* Created by WangMing on 15/11/17.
|
||||
*/
|
||||
//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
|
||||
var coordtransform = require('../index');
|
||||
//百度经纬度坐标转国测局坐标
|
||||
var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
|
||||
//国测局坐标转百度经纬度坐标
|
||||
var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
|
||||
//wgs84转国测局坐标
|
||||
var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
|
||||
//国测局坐标转wgs84坐标
|
||||
var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
|
||||
console.log(bd09togcj02);
|
||||
console.log(gcj02tobd09);
|
||||
console.log(wgs84togcj02);
|
||||
console.log(gcj02towgs84);
|
||||
//result
|
||||
//bd09togcj02: [ 116.39762729119315, 39.90865673957631 ]
|
||||
//gcj02tobd09: [ 116.41036949371029, 39.92133699351021 ]
|
||||
//wgs84togcj02: [ 116.41024449916938, 39.91640428150164 ]
|
||||
//gcj02towgs84: [ 116.39775550083061, 39.91359571849836 ]
|
31
mapserver/static/node_modules/coordtransform/test/index.html
generated
vendored
Normal file
31
mapserver/static/node_modules/coordtransform/test/index.html
generated
vendored
Normal file
@ -0,0 +1,31 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>coordTransform</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>请按F12打开控制台查看结果!(Please open console by F12!)</h1>
|
||||
<script src="../index.js"></script>
|
||||
<script>
|
||||
//国测局坐标(火星坐标,比如高德地图在用),百度坐标,wgs84坐标(谷歌国外以及绝大部分国外在线地图使用的坐标)
|
||||
//百度经纬度坐标转国测局坐标
|
||||
var bd09togcj02 = coordtransform.bd09togcj02(116.404, 39.915);
|
||||
//国测局坐标转百度经纬度坐标
|
||||
var gcj02tobd09 = coordtransform.gcj02tobd09(116.404, 39.915);
|
||||
//wgs84转国测局坐标
|
||||
var wgs84togcj02 = coordtransform.wgs84togcj02(116.404, 39.915);
|
||||
//国测局坐标转wgs84坐标
|
||||
var gcj02towgs84 = coordtransform.gcj02towgs84(116.404, 39.915);
|
||||
console.log(bd09togcj02);
|
||||
console.log(gcj02tobd09);
|
||||
console.log(wgs84togcj02);
|
||||
console.log(gcj02towgs84);
|
||||
//result
|
||||
//bd09togcj02: [ 116.39762729119315, 39.90865673957631 ]
|
||||
//gcj02tobd09: [ 116.41036949371029, 39.92133699351021 ]
|
||||
//wgs84togcj02: [ 116.41024449916938, 39.91640428150164 ]
|
||||
//gcj02towgs84: [ 116.39775550083061, 39.91359571849836 ]
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
10
mapserver/static/package-lock.json
generated
Normal file
10
mapserver/static/package-lock.json
generated
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"lockfileVersion": 1,
|
||||
"dependencies": {
|
||||
"coordtransform": {
|
||||
"version": "2.1.2",
|
||||
"resolved": "https://registry.npmjs.org/coordtransform/-/coordtransform-2.1.2.tgz",
|
||||
"integrity": "sha1-CQNJzWKx3AX65HspG/nwt86Cf2Y="
|
||||
}
|
||||
}
|
||||
}
|
42
tcp.grc
42
tcp.grc
@ -1,5 +1,5 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<?grc format='1' created='3.7.8'?>
|
||||
<?grc format='1' created='3.7.10'?>
|
||||
<flow_graph>
|
||||
<timestamp>Sun Apr 23 00:42:37 2017</timestamp>
|
||||
<block>
|
||||
@ -8,10 +8,6 @@
|
||||
<key>author</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>alias</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>window_size</key>
|
||||
<value></value>
|
||||
@ -44,6 +40,10 @@
|
||||
<key>generate_options</key>
|
||||
<value>qt_gui</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>hier_block_src_path</key>
|
||||
<value>.:</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>id</key>
|
||||
<value>top_block</value>
|
||||
@ -52,10 +52,18 @@
|
||||
<key>max_nouts</key>
|
||||
<value>0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>qt_qss_theme</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>realtime_scheduling</key>
|
||||
<value></value>
|
||||
</param>
|
||||
<param>
|
||||
<key>run_command</key>
|
||||
<value>{python} -u {filename}</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>run_options</key>
|
||||
<value>prompt</value>
|
||||
@ -191,7 +199,7 @@
|
||||
</param>
|
||||
<param>
|
||||
<key>gain0</key>
|
||||
<value>0</value>
|
||||
<value>17</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ant10</key>
|
||||
@ -1079,7 +1087,7 @@
|
||||
</param>
|
||||
<param>
|
||||
<key>_coordinate</key>
|
||||
<value>(712, 182)</value>
|
||||
<value>(728, 216)</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>_rotation</key>
|
||||
@ -1184,6 +1192,10 @@
|
||||
<key>average</key>
|
||||
<value>1.0</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>axislabels</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw</key>
|
||||
<value>samp_rate</value>
|
||||
@ -1452,17 +1464,29 @@
|
||||
<key>wintype</key>
|
||||
<value>firdes.WIN_BLACKMAN_hARRIS</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>label</key>
|
||||
<value>Relative Gain</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ymax</key>
|
||||
<value>10</value>
|
||||
<value>40</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>ymin</key>
|
||||
<value>-140</value>
|
||||
<value>-30</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>units</key>
|
||||
<value>dB</value>
|
||||
</param>
|
||||
</block>
|
||||
<block>
|
||||
<key>qtgui_waterfall_sink_x</key>
|
||||
<param>
|
||||
<key>axislabels</key>
|
||||
<value>True</value>
|
||||
</param>
|
||||
<param>
|
||||
<key>bw</key>
|
||||
<value>samp_rate</value>
|
||||
|
54
top_block.py
Normal file → Executable file
54
top_block.py
Normal file → Executable file
@ -1,8 +1,9 @@
|
||||
#!/usr/bin/env python2
|
||||
# -*- coding: utf-8 -*-
|
||||
##################################################
|
||||
# GNU Radio Python Flow Graph
|
||||
# Title: Top Block
|
||||
# Generated: Sun Apr 30 23:18:08 2017
|
||||
# Generated: Fri Nov 13 09:08:57 2020
|
||||
##################################################
|
||||
|
||||
if __name__ == '__main__':
|
||||
@ -36,9 +37,9 @@ class top_block(gr.top_block, Qt.QWidget):
|
||||
Qt.QWidget.__init__(self)
|
||||
self.setWindowTitle("Top Block")
|
||||
try:
|
||||
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
|
||||
self.setWindowIcon(Qt.QIcon.fromTheme('gnuradio-grc'))
|
||||
except:
|
||||
pass
|
||||
pass
|
||||
self.top_scroll_layout = Qt.QVBoxLayout()
|
||||
self.setLayout(self.top_scroll_layout)
|
||||
self.top_scroll = Qt.QScrollArea()
|
||||
@ -72,15 +73,16 @@ class top_block(gr.top_block, Qt.QWidget):
|
||||
)
|
||||
self.qtgui_waterfall_sink_x_0.set_update_time(0.10)
|
||||
self.qtgui_waterfall_sink_x_0.enable_grid(False)
|
||||
self.qtgui_waterfall_sink_x_0.enable_axis_labels(True)
|
||||
|
||||
if not True:
|
||||
self.qtgui_waterfall_sink_x_0.disable_legend()
|
||||
|
||||
if complex == type(float()):
|
||||
if "complex" == "float" or "complex" == "msg_float":
|
||||
self.qtgui_waterfall_sink_x_0.set_plot_pos_half(not True)
|
||||
|
||||
labels = ["", "", "", "", "",
|
||||
"", "", "", "", ""]
|
||||
labels = ['', '', '', '', '',
|
||||
'', '', '', '', '']
|
||||
colors = [0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0]
|
||||
alphas = [1.0, 1.0, 1.0, 1.0, 1.0,
|
||||
@ -106,21 +108,23 @@ class top_block(gr.top_block, Qt.QWidget):
|
||||
1 #number of inputs
|
||||
)
|
||||
self.qtgui_freq_sink_x_0.set_update_time(0.10)
|
||||
self.qtgui_freq_sink_x_0.set_y_axis(-140, 10)
|
||||
self.qtgui_freq_sink_x_0.set_y_axis(-30, 40)
|
||||
self.qtgui_freq_sink_x_0.set_y_label('Relative Gain', 'dB')
|
||||
self.qtgui_freq_sink_x_0.set_trigger_mode(qtgui.TRIG_MODE_FREE, 0.0, 0, "")
|
||||
self.qtgui_freq_sink_x_0.enable_autoscale(False)
|
||||
self.qtgui_freq_sink_x_0.enable_grid(False)
|
||||
self.qtgui_freq_sink_x_0.set_fft_average(1.0)
|
||||
self.qtgui_freq_sink_x_0.enable_axis_labels(True)
|
||||
self.qtgui_freq_sink_x_0.enable_control_panel(False)
|
||||
|
||||
if not True:
|
||||
self.qtgui_freq_sink_x_0.disable_legend()
|
||||
|
||||
if complex == type(float()):
|
||||
if "complex" == "float" or "complex" == "msg_float":
|
||||
self.qtgui_freq_sink_x_0.set_plot_pos_half(not True)
|
||||
|
||||
labels = ["", "", "", "", "",
|
||||
"", "", "", "", ""]
|
||||
labels = ['', '', '', '', '',
|
||||
'', '', '', '', '']
|
||||
widths = [1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1]
|
||||
colors = ["blue", "red", "green", "black", "cyan",
|
||||
@ -138,20 +142,20 @@ class top_block(gr.top_block, Qt.QWidget):
|
||||
|
||||
self._qtgui_freq_sink_x_0_win = sip.wrapinstance(self.qtgui_freq_sink_x_0.pyqwidget(), Qt.QWidget)
|
||||
self.top_layout.addWidget(self._qtgui_freq_sink_x_0_win)
|
||||
self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + "hackrf=81320f" )
|
||||
self.osmosdr_sink_0.set_clock_source("external", 0)
|
||||
self.osmosdr_sink_0 = osmosdr.sink( args="numchan=" + str(1) + " " + 'hackrf=81320f' )
|
||||
self.osmosdr_sink_0.set_clock_source('external', 0)
|
||||
self.osmosdr_sink_0.set_sample_rate(samp_rate)
|
||||
self.osmosdr_sink_0.set_center_freq(1575420000, 0)
|
||||
self.osmosdr_sink_0.set_freq_corr(0, 0)
|
||||
self.osmosdr_sink_0.set_gain(0, 0)
|
||||
self.osmosdr_sink_0.set_gain(17, 0)
|
||||
self.osmosdr_sink_0.set_if_gain(20, 0)
|
||||
self.osmosdr_sink_0.set_bb_gain(20, 0)
|
||||
self.osmosdr_sink_0.set_antenna("RX/TX", 0)
|
||||
self.osmosdr_sink_0.set_antenna('RX/TX', 0)
|
||||
self.osmosdr_sink_0.set_bandwidth(2600000, 0)
|
||||
|
||||
self.blks2_tcp_source_0 = grc_blks2.tcp_source(
|
||||
itemsize=gr.sizeof_gr_complex*1,
|
||||
addr="127.0.0.1",
|
||||
addr='127.0.0.1',
|
||||
port=1234,
|
||||
server=True,
|
||||
)
|
||||
@ -174,19 +178,20 @@ class top_block(gr.top_block, Qt.QWidget):
|
||||
|
||||
def set_samp_rate(self, samp_rate):
|
||||
self.samp_rate = samp_rate
|
||||
self.osmosdr_sink_0.set_sample_rate(self.samp_rate)
|
||||
self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate)
|
||||
self.qtgui_waterfall_sink_x_0.set_frequency_range(0, self.samp_rate)
|
||||
self.qtgui_freq_sink_x_0.set_frequency_range(0, self.samp_rate)
|
||||
self.osmosdr_sink_0.set_sample_rate(self.samp_rate)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
parser = OptionParser(option_class=eng_option, usage="%prog: [options]")
|
||||
(options, args) = parser.parse_args()
|
||||
def main(top_block_cls=top_block, options=None):
|
||||
|
||||
from distutils.version import StrictVersion
|
||||
if StrictVersion(Qt.qVersion()) >= StrictVersion("4.5.0"):
|
||||
Qt.QApplication.setGraphicsSystem(gr.prefs().get_string('qtgui','style','raster'))
|
||||
style = gr.prefs().get_string('qtgui', 'style', 'raster')
|
||||
Qt.QApplication.setGraphicsSystem(style)
|
||||
qapp = Qt.QApplication(sys.argv)
|
||||
tb = top_block()
|
||||
|
||||
tb = top_block_cls()
|
||||
tb.start()
|
||||
tb.show()
|
||||
|
||||
@ -195,4 +200,7 @@ if __name__ == '__main__':
|
||||
tb.wait()
|
||||
qapp.connect(qapp, Qt.SIGNAL("aboutToQuit()"), quitting)
|
||||
qapp.exec_()
|
||||
tb = None # to clean up Qt widgets
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
Loading…
Reference in New Issue
Block a user