简而言之:我认为地图单位是米或公里,但这似乎不对。它们是十进制度吗?可以在ArcGis中将其设置为选项吗?
嗨,
我正在与使用ArcGIS的研究人员合作,在地图上叠加一些计算机视觉图像。我已经创建了一个世界文件来测试ArcGIS中的栅格导入,但我似乎错误地缩放了。
我创建了一个jgw文件,以配合1600x1600像素的图像,该图像应覆盖8 x 8米的正方形。我已经设法正确定位和旋转它,但缩放非常多。
0.005
0.0013043484005
0.00482687012982
-0.005
10.8090421
59.5502261
更新:我尝试了,几乎是随机缩小图像,并向我的同事发送了这个文件(请注意,我错过了输入第1行和第4行的小数位数:
0.00000005
0.000000013043484005
0.0000000482687012982
-0.00000005
10.8090421
59.5502261
生成的图像看起来像这样,更接近我要找的东西。
我使用一个简单的python脚本创建了jgw文件,读取了角位置的csv文件。
CSV输入文件:
Prosjekt,Felt,Kornart,Season,Date_image,BildeID,RuteID,OmtrentligHimmelretning,Hjorne,Koordinat-system,Latitude,Longitude
Multisens,Garder,SW,Harvest,30/08/2012,902,10,se,NedreHoyre,WGS-84,59.5501946,10.8092326
Multisens,Garder,SW,Harvest,30/08/2012,902,10,sw,NedreVenstre,WGS-84,59.5501637,10.809107
Multisens,Garder,SW,Harvest,30/08/2012,902,10,nw,OvreVenstre,WGS-84,59.5502261,10.8090421
Multisens,Garder,SW,Harvest,30/08/2012,902,10,ne,OvreHoyre,WGS-84,59.5502595,10.8091657
Python脚本:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
def main():
data = pd.read_csv('pos.csv',header=0)
# Latitude is Y and longitude is X
# The corners are denoted as:
# a ----- b
# | |
# | |
# c ----- d
hjorne = data['Hjorne']
lat = data['Latitude']
lon = data['Longitude']
a = {
'lat': lat[ np.where(hjorne=='OvreVenstre')[0][0] ],
'lon': lon[ np.where(hjorne=='OvreVenstre')[0][0] ]
}
b = {
'lat': lat[ np.where(hjorne=='OvreHoyre')[0][0] ],
'lon': lon[ np.where(hjorne=='OvreHoyre')[0][0] ]
}
c = {
'lat': lat[ np.where(hjorne=='NedreVenstre')[0][0] ],
'lon': lon[ np.where(hjorne=='NedreVenstre')[0][0] ]
}
d = {
'lat': lat[ np.where(hjorne=='NedreHoyre')[0][0] ],
'lon': lon[ np.where(hjorne=='NedreHoyre')[0][0] ]
}
print a , b , c, d
# Pixels per meter is 1600 per 8 m
mPerPix = 8 / 1600.0
scalex = mPerPix
scaley = -mPerPix
# The skew rate is sin( image width ) [m/px]
rotationAngle = np.arctan2( b['lat'] - a['lat'], b['lon'] - a['lon'])
skewY = np.sin( rotationAngle ) * mPerPix
skewX = np.cos( rotationAngle ) * mPerPix
print rotationAngle
outfile = open('output.jgw','w')
# Line 1: A: pixel size in the x-direction in map units/pixel
# Line 2: D: rotation about y-axis
# Line 3: B: rotation about x-axis
# Line 4: E: pixel size in the y-direction in map units, almost always negative[3]
# Line 5: C: x-coordinate Longitude of the center of the upper left pixel
# Line 6: F: y-coordinate Latitude of the center of the upper left pixel
outfile.write( '{}\n{}\n{}\n{}\n{}\n{}\n'.format(
scalex, skewY, skewX, scaley, a['lon'], a['lat']))
outfile.close()
答案 0 :(得分:0)
简而言之:我认为地图单位是米或公里,但这似乎并不合适。它们是十进制度吗?可以在ArcGis中将其设置为选项吗?
看看你的第一张照片,左下角。显然,地图单位是十进制度。 地图单位取决于坐标系,一般如果你有像(WGS84)这样的地理坐标系,它们将以度为单位,如果使用投影坐标系,它们将是公制坐标系。
如果您需要以米为单位的角坐标,解决方案可以将您的参考点(或您希望用于提取度量坐标的图层)转换为您所在国家/地区使用的投影坐标系。您可以在Arcgis中使用Project或Project栅格工具。