我试图修改一个整数来获得一个数组位置,以便它循环.i %
arrayLength对于正数而言做得很好,但对于负数而言,这一切都是错误的.
4 % 3 == 1
3 % 3 == 0
2 % 3 == 2
1 % 3 == 1
0 % 3 == 0
-1 % 3 == -1
-2 % 3 == -2
-3 % 3 == 0
-4 % 3 == -1
Run Code Online (Sandbox Code Playgroud)
所以我需要一个实现
int GetArrayIndex(int i, int arrayLength)
Run Code Online (Sandbox Code Playgroud)
这样的
GetArrayIndex( 4, 3) == 1
GetArrayIndex( 3, 3) == 0
GetArrayIndex( 2, 3) == 2
GetArrayIndex( 1, 3) == 1
GetArrayIndex( 0, 3) …Run Code Online (Sandbox Code Playgroud) 我已经尝试了以下输入:lat/lon数据然后我将计算它周围的一个方框,比方说50米,所以+/- 50米的东/北值.
现在我将它重新转换为lat/lon并使用脚本:
http://robotics.ai.uiuc.edu/~hyoon24/LatLongUTMconversion.py我得到的结果是不可能的,之前大约是7,之后是大约2.
zone, easting, northing = LLtoUTM(23, location.get_lat(), location.get_lon())
topUTM = northing + error
bottomUTM = northing - error
leftUTM = easting - error
rightUTM = easting + error
left, top = UTMtoLL(23, leftUTM, topUTM, zone)
Run Code Online (Sandbox Code Playgroud)
是我的代码中的错误,还是脚本有缺陷?
所以我试图使用pyproj,只需要lat/lon来指示lat/lon看看会发生什么
>>> p = pyproj.Proj(proj='utm', zone=32, ellps='WGS84')
>>> p
<pyproj.Proj object at 0x7ff9b8487dd0>
>>> x,y = p(47.9941214, 7.8509671)
>>> print x,y
5159550.36822 1114087.43925
>>> print p(x,y,inverse=True)
(47.971558538495991, 7.8546573140162605)
Run Code Online (Sandbox Code Playgroud)
在这里它并不像上面的脚本那么遥远,但它似乎仍然不够正确,因为无法使用它.怎么会?我该怎么做才能获得更准确的结果?
编辑:
我运行了test()并且所有测试都通过了.
在epsg文件中没有这样的东西.我发现的最接近的是:
<32632> +proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs <> …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Proj4js 执行一些坐标转换,但关于如何使用它的信息很少。
我想要做的是将纬度和经度转换为 UTM 坐标,但我不知道该区域是什么。这应该很容易,因为经度决定了区域,并且如果您知道默认情况下会出现该区域。
我尝试在 Proj4js 中执行此操作,但收到错误消息
“未捕获的类型错误:未定义不是函数”
我的代码是这样的:
proj4Arr = [-105.2098, 39.7458];
var source = ('+proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees +no_defs');
var dest = ("+proj=utm +ellps=GRS80 +datum=nad83 +units=m +no_defs");
console.log(proj4(source, dest, proj4Arr));
Run Code Online (Sandbox Code Playgroud)
我只是不知道在不包含区域的情况下是否可以做到这一点。我可以先计算区域,然后根据需要将其放入字符串中,但我试图保持简单。
如果有人知道任何好的纯 js 资源示例(不一定使用 OpenLayers 3),我也将不胜感激。
谢谢!
我有一个包含 9,000 多个 UTM 坐标的 .csv 文件,我想将其转换为十进制度数,但遇到了一些麻烦。我已经搜索了在这里和其他地方发布的几篇文章,但似乎找不到将我的 UTM 集转换为可用且准确的经纬度的解决方案。
我基本上有两个问题:1) 有没有人看到我的代码有任何问题;和 2) 是否有人熟悉放弃将 UTM 转换为纬度/经度而仅在 Rgooglemaps 包中使用 UTM?
以下是我的代码和数据的一些示例:
>head(utm)
-Northing Easting
1 4236576 615805
2 4236576 615805
3 4236576 615805
4 4236576 615805
5 4236576 615805
6 4236576 615805
Run Code Online (Sandbox Code Playgroud)
utm <- read.csv(file="utm.csv", header=TRUE, sep=",")
library(rgdal)
utm <- utm[complete.cases(utm),]
utm1 <- data.frame(x=utm$Northing,y=utm$Easting)
coordinates(utm1) <- ~x+y
class(utm1)
proj4string(utm1) <- CRS("+proj=utm +zone=10 +datum=WGS84 +units=m +ellps=WGS84")
utm2 <- spTransform(utm1,CRS("+proj=longlat +datum=WGS84"))
Run Code Online (Sandbox Code Playgroud)
> head(utm2)
SpatialPoints:
x y
[1,] -91.08516 4.727323
[2,] -91.08516 …Run Code Online (Sandbox Code Playgroud) 我有 WGS84 中的 lat、lng 修复列表,我想在这些列表上进行计算,例如点、多边形之间的距离测量等...为此,我计划使用匀称但后来,我需要将其转换为笛卡尔空间,这只是局部准确。
我的问题是我的位置修复可能来自世界各地,所以如果我使用针对我所在地区优化的固定投影,我会在世界其他地方引入错误。是否可以根据当前位置列表的平均位置来定义我自己的以位置对为中心的笛卡尔投影?我需要计算的位置修复总是彼此接近,但不同的位置修复列表可以分布在世界各地。
例如:假设我得到 5 个修复,我需要对其进行计算。然后,我想定义一个在这些定位点附近准确的投影,因为这些定位点之间的距离始终在几公里之内。当我获得接下来的 5 个修复时,它们可能位于世界的完全不同的地方,我想定义一个针对这些位置修复优化的投影。
我将如何解决这个问题?似乎使用 pyproj(如果我理解得很好,则使用 proj.4)是一个好主意,但我无法理解初始化投影所需的字符串,如下所示。有人能帮我吗?
local_proj = pyproj.Proj(r'+proj=tmerc +lat_0=51.178425 +lon_0=3.561298 +ellps=GRS80 +units=meters')
Run Code Online (Sandbox Code Playgroud) utm ×2
c# ×1
javascript ×1
math ×1
modulo ×1
proj ×1
proj4js ×1
python ×1
python-2.7 ×1
r ×1
rgooglemaps ×1
shapely ×1