标签: epsg

PostGis距离计算

我正在做一个室内地图导航应用程序,我想要做的是在建筑物中建立一个地图点数据库.

我使用的所有坐标都取自Google Map(这意味着EPSG为3857).我现在需要做的是找到以米为单位的距离以及以米为单位的D_Within

当我试图提取出2点之间的距离时:

SELECT ST_DISTANCE(
ST_GeomFromText('POINT(' || StartLon || ' ' || StartLat || ')',3857),
ST_GeomFromText('POINT(' || EndLon || ' ' || EndLat || ')',3857))
FROM i3_building.floordata;
Run Code Online (Sandbox Code Playgroud)

对于前两行:

Start: 103.776047 1.292149; End: 103.77607 1.292212 (3 meters away)
Start: 103.776070 1.292212; End: 103.77554 1.292406 (50 meters away)
Run Code Online (Sandbox Code Playgroud)

给出的结果是:

2.59422435413724e-005
4.11096095831604e-005
Run Code Online (Sandbox Code Playgroud)

即使它们处于rad,第二个结果也只是第一个结果的两倍.所以这让我感到困惑.然后我尝试将其输出为米:

SELECT ST_DISTANCE(
    ST_GeographyFromText('POINT(' || StartLon || ' ' || StartLat || ')'),
    ST_GeographyFromText('POINT(' || EndLon || ' ' || EndLat || ')'))
FROM i3_building.floordata;
Run Code Online (Sandbox Code Playgroud)

给出相同行的结果是:

2.872546829
4.572207435
Run Code Online (Sandbox Code Playgroud)

这不是我所期望的.我对PostGis和SRID不是很熟悉,所以这个问题可能看起来很简单,但请帮助我,我没有被@@

postgresql postgis distance srid epsg

8
推荐指数
1
解决办法
9447
查看次数

Android计算右侧bbox for WMS getFeatureInfo

我正在尝试向我的Geoserver请求检索地图上用户点击附近的功能.

图片

地图占据了所有空间.因此我用这种方式计算了BBOX:

region = mMap.getProjection().getVisibleRegion().latLngBounds;
double left = region.southwest.longitude;
double top = region.northeast.latitude;
double right = region.northeast.longitude;
double bottom = region.southwest.latitude;
Run Code Online (Sandbox Code Playgroud)

宽度和高度如下:

mMapFragment.getView().getWidth();
mMapFragment.getView().getHeight();
Run Code Online (Sandbox Code Playgroud)

而X和Y参数按以下方式计算:

Point click = mMap.getProjection().toScreenLocation(latLng);
Run Code Online (Sandbox Code Playgroud)

其中latLng是来自事件onMapClick(LatLng)的点(参考此处:https://developers.google.com/android/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener).

我获得的结果是:

http://localhost/geoserver/sindot/wms?service=WMS&request=GetFeatureInfo&info_format=application%2Fjson&version=1.1.1&srs=EPSG%3A3857&bbox=1222173.74033,5056403.44084,1222174.11356,5056403.7028&query_layers=sindot:verticale&layers=sindot:verticale&feature_count=3&styles=tabletb3lab&width=2048&height=1262&x=1441&y=503
Run Code Online (Sandbox Code Playgroud)

问题是服务器总是返回一个空响应,即使我知道那里有功能,因为我可以看到地图上的斑点.会是什么呢?

提前致谢.

android wms getfeatureinfo epsg

8
推荐指数
1
解决办法
448
查看次数

将坐标系统导出为ESPG代码:to_epsg()或ExportToEPSG()

使用fiona和使用Python处理坐标系时osgeo,似乎有很多方法可以通过导入/导出不同的crs格式来定义坐标系,例如:

FIONA:

from fiona.crs import from_epsg,from_string,to_string

# Import crs from different formats:
wgs = from_epsg(4326)
wgs = from_string("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs ")

# Export crs as proj4 string
wgs_proj4_string = to_string(wgs)
Run Code Online (Sandbox Code Playgroud)

OSGEO:

from osgeo import osr

srs = osr.SpatialReference()
srs.ImportFromESRI(['GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]'])
srs.ImportFromProj4("+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs")
srs.ImportFromEPSG(4326)
#the import options are very rich

# Export to different formats
srs.ExportToProj4()
srs.ExportToWkt()
srs.ExportToXML()
#... many export options!
Run Code Online (Sandbox Code Playgroud)

但是,我注意到,这两个库都允许通过其EPSG代码轻松定义crs,但是它们都缺少逆函数(将crs导出为ESPG代码)。

我最接近EPSG代码的方式是:

srs.AutoIdentifyEPSG()
epsg = srs.GetAuthorityCode(None)
Run Code Online (Sandbox Code Playgroud)

但是它似乎并不那么可靠,而且其他提议的解决方案似乎也包括大量的调整或至少与Web服务相关。

问题: …

python geospatial osgeo epsg fiona

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

CRSError:无效投影:epsg:4326:对于 geopandas

我正在使用 anaconda 作为 geopandas。但是,每次我尝试使用 epsg:4326: 时,都会出现错误。

CRSError: Invalid projection: epsg:4326: (Internal Proj Error: proj_create: SQLite error on SELECT name, type, coordinate_system_auth_name, coordinate_system_code, datum_auth_name, datum_code, area_of_use_auth_name, area_of_use_code, text_definition, deprecated FROM geodetic_crs WHERE auth_name = ? AND code = ?: no such column: area_of_use_auth_name)
Run Code Online (Sandbox Code Playgroud)

我怎么解决这个问题?

我试过:

from functools import partial
from pyproj import Proj, transform
proj_4326 = Proj(init="epsg:4326")
proj_3857 = Proj(init="epsg:3857")
Run Code Online (Sandbox Code Playgroud)

我还尝试重置环境:

conda update anaconda
Run Code Online (Sandbox Code Playgroud)

但他们都给出了相同的 CRSError

我的版本是:

import sys
import pyproj
import geopandas
Run Code Online (Sandbox Code Playgroud)
print(sys.version)
print(pyproj.__version__)
print(geopandas.__version__)
Run Code Online (Sandbox Code Playgroud)
3.8.5 (default, Sep  4 2020, …
Run Code Online (Sandbox Code Playgroud)

python epsg geopandas

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

将坐标从EPSG 3857转换为4326 DotSpatial

我在我的数据库中有EPSG 3857格式的坐标列表.我需要在EPSG 4326中转换它们我试图使用DotSpatial,但我的代码总是重新调整一个无限的双数组.

public double[] ConvertCoodinates()
    {
        double[] xy = new double[2];
        xy[0] = 5085240.8300000000;
        xy[1] = 1530088.9600000000;
    //An array for the z coordinate
        double[] z = new double[1];
        z[0] = 0;
        ProjectionInfo pStart = KnownCoordinateSystems.Geographic.World.WGS1984;
        pStart.AuthorityCode = 3857;
        ProjectionInfo pEnd = KnownCoordinateSystems.Geographic.World.WGS1984;
        pEnd.AuthorityCode = 4326;
        Reproject.ReprojectPoints(xy, z, pStart, pEnd, 0, 1);
        return xy;
    }
Run Code Online (Sandbox Code Playgroud)

xy数组总是无穷大; 有人能帮我吗?

c# epsg dotspatial

3
推荐指数
2
解决办法
3265
查看次数

如何将 EPSG 坐标转换为纬度/经度?

我有以下 OpenGis 数据,我想将其转换为纬度/经度坐标(如 Google 地图所使用)。

\n\n
<address xmlns:gml="http://www.opengis.net/gml">\n  <gml:Point srsName="urn:ogc:def:crs:EPSG::28992">\n    <gml:pos>142629.0 523546.0</gml:pos>\n  </gml:Point>\n</address>\n
Run Code Online (Sandbox Code Playgroud)\n\n

EPSG注册表中,我找到了EPSG的起始位置:28992。

\n\n
Latitude of natural origin      52\xc2\xb009\'22.178"N\nLongitude of natural origin     5\xc2\xb023\'15.5"E\nScale factor at natural origin  0.9999079 unity\nFalse easting                   155000 metre\nFalse northing                  463000 metre\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试过使用proj4js,但我不知道如何将其放入投影中以及如何获得所需的输出。

\n\n

我也尝试过自己计算一下。但我不知道我在这里做什么,也没有什么真正有意义的:(。

\n

geolocation node.js opengis epsg

3
推荐指数
1
解决办法
5587
查看次数

如何使用 R 从 PROJ4 字符串接收 EPSG 代码?

如何使用 R 从 PROJ4 字符串接收 EPSG 代码

我有一堆栅格数据集(随机分布在世界各地,北半球和南半球),具有坐标参考系统UTM WGS84。现在我想使用 R 找出每个数据集的具体 EPSG 代码。你有什么想法吗?

# Install and load package raster
install.packages('raster')
library(raster)

# Load a specific raster dataset and query the crs
raster_dat <- raster('D:/UnknownUser/GlobalRasterData/raster_dat1')
crs(raster_dat)
# CRS arguments:
#  +proj=utm +zone=13 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
Run Code Online (Sandbox Code Playgroud)

也许可以以动态方式创建 EPSG 代码,因为 EPSG 代码似乎始终是北半球的 <326> 和特定区域编号(例如 <32>)(德国)的组合,这会导致EPSG 代码 <326> + <32> = <32632>。

不幸的是,我发现您似乎从南半球的 <327> 开始,然后添加特定的区域编号,例如 <32> (尼日利亚),结果是 <327> + <32> =<32732>。

现在我不确定这个理论是否正确(需要验证,包括来源))以及是否有更简单的方法从 PROJ4 字符串接收 EPSG 代码。

我发现的有用链接:

网址: …

r raster utm coordinate-systems epsg

2
推荐指数
1
解决办法
2875
查看次数

为什么 sf::st_transform 在应用于具有 sf 列 (POINT) 的 df 时返回空几何图形?

我正在尝试将数据框中的 sf 点(CRS:4326,基于度数)转换为本地公制投影(EPSG:23867,DGN95 / UTM 区域 47N)。

所以我有一个数据框“航点”,其中包含我的所有属性以及经度/纬度作为列。我在数据框中创建一个 sf 点几何图形,并以“lat”和“lon”作为输入(waypoints_sf)。(此外,我将坐标保存为两个新列中的北距和东距)

waypoints_sf <-  st_as_sf(waypoints,
                      coords = c("lat", "lon"),
                      crs = 4326)
coordinates_tmp <- st_coordinates(waypoints_sf)
colnames(coordinates_tmp) <- c("E","N") 
waypoints_sf <- cbind(waypoints_sf,coordinates_tmp) # save coordinates as column E and N

class(waypoints_sf)
[1] "sf"         "grouped_df" "tbl_df"     "tbl"        "data.frame"

class(waypoints_sf$geometry)
[1] "sfc_POINT" "sfc"

st_crs(waypoints_sf$geometry)
[1] Coordinate Reference System:
    EPSG: 4326 
    proj4string: "+proj=longlat +datum=WGS84 +no_defs"
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试 st_transform 这个数据框时,它不会抛出错误或警告,但无论我尝试什么,sf 点都是空几何图形c(NaN, NaN)

 waypoints_sf <-  st_transform(waypoints_sf, 23867)
 waypoints_sf$geometry[1]
 [1] Geometry set for 1 feature  (with 1 geometry …
Run Code Online (Sandbox Code Playgroud)

r epsg r-sf

0
推荐指数
1
解决办法
1317
查看次数