标签: wgs84

GeoJSON和MongoDB:将点存储为GeoJSON.Point值得吗?

随着2.3 >位置数据处理和查询,MongoDB 的引入变得更加有用.MongoDB将文档存储为BSON,因此每个文档都包含所有文档字段,这显然可能导致比传统RMDBS更大的数据库.

我曾经将折线和多边形存储为一系列索引点,一个额外的字段代表每一行的顺序(我这样做是为了确保一致性,因为我使用JavaScript,因此点并不总是以正确的顺序存储).它是这样的:

polyline: {
  [
    point: [0,0],
    order: 0
  ],
  [
    point: [0,1],
    order: 1
  ]
}
Run Code Online (Sandbox Code Playgroud)

而现在我使用:

polyline: {
  type: 'LineString',
  coordinates: [
    [0,0],
    [1,0]
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经看到文档大小有所改善,因为一些折线最多可以有500个点.

但是,我想知道存储我所有Point数据的好处是什么GeoJSON.我对文档大小的增加感到气馁,例如:

loc: [1,0]
Run Code Online (Sandbox Code Playgroud)

比...更好

loc: {
  type: 'Point',
  coordinates: [0,1]
}
Run Code Online (Sandbox Code Playgroud)

因此更容易合作.

我的问题是:

是否更好/建议将点存储为GeoJSON对象而不是2点阵列?

我考虑的是以下内容:

  • 大小限制:我可能有数百万个带位置的文档,这可能会影响集合的大小,可能会影响我的口袋.
  • 一致性:最好处理lng, lat格式中的每组坐标,而不是坚持lat, lng使用点,而前者用于我所有其他位置功能.
  • 方便:如果我抓住一个点,并使用$geoWithin$geoIntersects使用它,在将其用作query参数之前,我不需要先将其转换为GeoJSON .

我不确定的是:

  • 是否loc: [x,y]将在MongoDB上放弃支持
  • 任何索引都有利于2dsphere而不是2d
  • 是否计划 …

database gis wgs84 mongodb

17
推荐指数
1
解决办法
1万
查看次数

如何使用PROJ.4将坐标从WGS84转换为投影中的坐标?

我在WGS84,我想转变为一个地图投影使用SWEREF99 TM协调GPS坐标PROJ.4在Java或Proj4js在JavaScript中.

很难找到PROJ.4的文档以及如何使用它.如果您有良好的链接,请将其作为评论发布.

SWEREF99 TM的PROJ.4参数是+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs

我试图使用PROJ.4 Java库进行转换Lat: 55° 00’ N, Long: 12° 45’ E并尝试使用此代码:

String[] proj4_w = new String[] {
 "+proj=utm",
 "+zone=33",
 "+ellps=GRS80",
 "+towgs84=0,0,0,0,0,0,0",
 "+units=m",
 "+no_defs"
};

Projection proj = ProjectionFactory.fromPROJ4Specification(proj4_w);  

Point2D.Double testLatLng = new Point2D.Double(55.0000, 12.7500);
Point2D.Double testProjec = proj.transform(testLatLng, new Point2D.Double());
Run Code Online (Sandbox Code Playgroud)

这给了我一点,Point2D.Double[5197915.86288144, 1822635.9083898761]但我应该N: 6097106.672, E: 356083.438 是我做错了什么?我应该使用什么方法和参数呢?

正确的值取自Lantmäteriet.

我不确定是否proj.transform(testLatLng, new Point2D.Double());使用正确的方法.

java wgs84 proj map-projections proj4js

9
推荐指数
1
解决办法
7123
查看次数

WGS84到Google地图位置和返回的Java代码

搜索一些示例代码,用于将WGS84坐标系中的点转换为Google地图中的地图位置(像素位置),同时支持缩放级别.

如果代码评论很好,那么它也可以使用其他语言.

您还可以向我指出一个开源Java项目:)

找到一些资源:

OpenLayer实现.

JOSM项目

来自JH LABS的优秀Java Map Projection Library.这是一个纯Java PROJ.4端口.是否从WGS84投影到米.从那里将米转换为平铺像素非常简单.

java mapping wgs84 google-maps

8
推荐指数
2
解决办法
2万
查看次数

Android GPS位置的getAltitude()如何工作

您好

我试图实现一个简单的GPS跟踪器.因此被使用

lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this);  
Run Code Online (Sandbox Code Playgroud)

然后我用了

public void onLocationChanged(Location location) {
Run Code Online (Sandbox Code Playgroud)

读取当前位置高度的方法.

但我真的不知道Location.getAltitude()返回什么.该文件说它返回了海拔高度.但这是米吗?还是脚?如果我把手机放在我旁边的桌子上,这个值会在500到-500之间变化吗?

这真的有用吗???

wgs84 gps android locationmanager

7
推荐指数
2
解决办法
2万
查看次数

将 X、Y 像素转换为经度和纬度

我有一张来自地图一部分的真实比例的 8640x11520 像素的图像。我需要将我的 x, y 点转换为坐标,有人想知道吗?

在此处输入图片说明

var mapWidth = 8640;
var mapHeight = 11520;

var mapLatitudeStart = 28.349768989955244;
var mapLongitudeStart = -81.55803680419922;

var maxLatitude = 28.349806758250104;
var maxLongitude = -81.541128;

var pointNeedConversion = {'x': 4813.10 'y': 2674.84};
var pointLatitude = ??
Run Code Online (Sandbox Code Playgroud)

javascript math maps wgs84 coordinates

7
推荐指数
1
解决办法
2245
查看次数

使用WGS84-椭圆体的距离

考虑地球表面上的点P1(60°N,20°E,0)和P2(60°N,22°E,0)

当使用WGS-84椭圆体模拟地球的形状时,点P1和P2之间的最短距离是多少?

wgs84 gps

6
推荐指数
2
解决办法
9816
查看次数

如果你有GeoTiff,是否可以使用GeoTransform将Lat/Lon点转换为X,Y?

我正在使用GDAL库.目前,我可以接受左上角和右上角,并从原始图像中切出图像.我现在要做的是,接受两个WKT点并转换为X,Y坐标来做同样的事情.我只是想知道如果我知道GeoTransform及它使用的坐标系统(WGS84)是否可以这样做?

c++ wgs84 gdal geotiff

5
推荐指数
2
解决办法
2669
查看次数

坐标转换Gauss-Kruger-WGS84使用GeoTools不正确

我在GeoTools的帮助下遇到了一个关于心爱坐标变换的问题:我想将Gauss-Kruger(第5区,EPSG 31469)的一组坐标转换成普通的WGS84坐标(EPSG 4326).

我用一个简单的例子构建了一个代码(只需要一对坐标):

double coordX = 5408301.53; 
double coordY = 5659230.5;
double[] punt = new double[2];

CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:31469");
CoordinateReferenceSystem targetCRS = CRS.decode("EPSG:4326");

MathTransform transform = CRS.findMathTransform(sourceCRS, targetCRS, true);

DirectPosition expPt = new GeneralDirectPosition(coordX, coordY);
expPt = transform.transform(expPt, null);
punt = expPt.getCoordinate();

System.out.println(punt[0] + ", " + punt[1]); //lon, lat
Run Code Online (Sandbox Code Playgroud)

调试后的结果如下:48.791886921764345,17.16525096311777

当我检查我获得的WGS84坐标(只是将它们打到谷歌地图)时,我最终在奥地利附近的捷克共和国的某个地方,虽然这对坐标应该在德国东部的某个地方(当然,我用一些html检查了它)解码器):

--->应该是结果:51.0609167,13.6900142.

我无法想象出现这种失败的原因.GeoTools获得了两个想要的CRS(我从java控制台中附加了响应的摘录)

有人能解释一下吗?我很感激任何帮助!

许多问候,塞巴斯蒂安


**sourceCRS:**
PROJCS["DHDN / 3-degree Gauss-Kruger zone 5",
    GEOGCS["DHDN", 
    DATUM["Deutsches Hauptdreiecksnetz", 
      SPHEROID["Bessel 1841", 6377397.155, 299.1528128, AUTHORITY["EPSG","7004"]], 
      TOWGS84[612.4, 77.0, 440.2, -0.054, 0.057, -2.797, 2.55], …
Run Code Online (Sandbox Code Playgroud)

java wgs84 geotools

5
推荐指数
1
解决办法
2696
查看次数

IGS上的外部GPS数据的WGS84大地水准面高度高度偏移

对于我正在编写的应用程序,我们正在将IOS设备与外部传感器连接,外部传感器通过本地wifi网络输出GPS数据.这些数据以海拔高度的"原始"格式出现.通常,所有GPS高度需要具有与基于当前位置的WGS84大地水准面高度相关的校正因子.

例如,在以下地理控制点(http://www.ngs.noaa.gov/cgi-bin/ds_mark.prl?PidBox=HV9830)位于Lat 38 56 36.77159和Lon 077 01 08.34929

HV9830* NAD 83(2011) POSITION- 38 56 36.77159(N) 077 01 08.34929(W)   ADJUSTED  
HV9830* NAD 83(2011) ELLIP HT-    42.624 (meters)        (06/27/12)   ADJUSTED
HV9830* NAD 83(2011) EPOCH   -  2010.00
HV9830* NAVD 88 ORTHO HEIGHT -    74.7    (meters)     245.    (feet) VERTCON   
HV9830  ______________________________________________________________________
HV9830  GEOID HEIGHT    -        -32.02  (meters)                     GEOID12A
HV9830  NAD 83(2011) X  -  1,115,795.966 (meters)                     COMP
HV9830  NAD 83(2011) Y  - -4,840,360.447 (meters)                     COMP
HV9830  NAD 83(2011) Z  -  3,987,471.457 (meters) …
Run Code Online (Sandbox Code Playgroud)

iphone wgs84 gps objective-c ios

5
推荐指数
1
解决办法
3992
查看次数

为什么boost :: geometry地理Vincenty距离在赤道附近不正确?

我需要一个函数来高精度地计算一对WGS 84位置之间的距离,并且我打算使用Boost几何中geographic函数。

升压几何设计合理的状态:

有Andoyer方法,既快速又精确,还有Vincenty方法,又慢又精确。

但是,在boost::geometry::distance同时使用AndoyerVincenty策略测试功能时,我得到了以下结果:

WGS 84 values (metres)
    Semimajor axis:         6378137.000000
    Flattening:             0.003353
    Semiminor axis:         6356752.314245

    Semimajor distance:     20037508.342789
    Semiminor distance:     19970326.371123

Boost geometry near poles
Andoyer function:
    Semimajor distance:     20037508.151445
    Semiminor distance:     20003917.164970
Vincenty function:
    Semimajor distance:     **19970326.180419**
    Semiminor distance:     20003931.266635

Boost geometry at poles
Andoyer function:
    Semimajor distance:     0.000000
    Semiminor distance:     0.000000
Vincenty function:
    Semimajor distance:     **19970326.371122**
    Semiminor distance:     20003931.458623
Run Code Online (Sandbox Code Playgroud)

Vincenty沿半长轴(即在赤道附近)距离小于周围的短半轴的距离北极和南极之间的轴。那是不正确的。 …

c++ gis wgs84 boost boost-geometry

5
推荐指数
1
解决办法
2046
查看次数