各位前辈(epic等)好!
小弟用 Map369 下载了广州花都区19级图片,单张图片分辨率为1280*1792,数量有约3900张。
用图片软件将横向第一行所有图片拼成一张大图,并用最左边图片的左上角经纬度数据和最右边图片的右下角经纬度数据录入 OruxMaps Desktop 中,生成一张 OruxMaps 大图(第一行),可以在安卓端正常打开。
再用图片软件将横向第二行所有图片拼成一张大图,类似上面方法生成一张 OruxMaps 大图(第二行),也可以在安卓端正常打开。
小弟将上述两张大图都拷入 OruxMaps 软件的 mapfiles 目录下,进入大图(第一行),移动地图时不能正常过度到大图(第二行),中间有一块空白区域,如下图。
问题:
1)请问 Map369 下载的图片事实上是无缝连接的,为何转成 OruxMaps 地图后却不是无缝连接?
2)小弟再看了一下 Map369 下载的相邻图片,用拼图软件拼起来是无缝的,但奇怪的是相关的 .pnw 坐标文件里的经纬度数值却是非连续的,请问这是什么原因呢?(见下图红色数字)这是不是导致上述 1)问题的原因呢?
谢谢各位前辈指教!
donnie





你直接用GM打开每个png文件,就已经自动帮你无缝拼接了,你只要导出jpg文件,再转成oruxmaps或者OZI格式就OK了。不再需要用到别的拼图软件了。
谢谢大哥指点。
小弟用 GM 将第一行图片与第二行图片分别转成 PNG+PGW+PRJ 文件,再用 OruxMaps Desktop 转换为两个地图文件(因为每行图片分辨率已是 99840*1792,为避免合成一张地图尺寸太大、文件太大,所以分开制成两个地图文件。)
还是遇到 OruxMaps 里第一行地图过渡到第二行地图时中间有一段空白的问题(即不能无缝连接),现象见下面图片。请问为什么会这样?有什么解决方案吗?
谢谢!
注:用 OruxMaps Desktop 转换为两个地图文件的步骤严格遵守 epic 大哥在另外一个帖子的教程操作:
epic wrote:
几点意见:
1. GM中地图投影
谷哥GPS是从Google Map下载地图. Goole Map (及大部分网上地图) 是用 web mercator 投影.
GM默认的投影是 WGS84/Geo (即经纬直投, 纵轴与横轴的间距相同). 把 Google Map 地图导入
Geo 投影, 地图会被纵向压缩(或横向拉大). 输出的地图会变得蒙查查.
举例: 输入3x3, 每个512x512的卫星图,
Geo 投影输出的JPG是1687x1536.
web mercator 投影输出的JPG是1536x1536.
在Geo投影下横轴被拉大10%.
要在GM设置 web mercator 投影
- Tools menu -> configure -> Projection (工具 -> 设置 -> 投影)
- 选 Init From EPSG
- 输入 900913
- 会见到: Projection: Mercator, Datum: GOOGLE MAPS
问题来了, OruxmapsDesktop 中没有 GOOGLE MAPS Datum.
除非直接人手输入左上角及右下角的经纬度, GM输出的地图(web mercator投影)
仍不能转成地图包在Oruxmaps中应用.
25/1/2013 更新:
把 web mercator 看作 WGS84/mercator 就可以了.
(i) 用GM输出 web mercator 投影的地图(.jpg) + 世界文件(.jgw) + 投影文件(projection file, .prj)
(ii) 读取地图的经纬度边界
- GM, 打开刚才的地图 .jpg
- GM -> Tools -> Configure -> General
Position Display Format: Lat/Lon dd.ddddddddd h <- 小数点度数
- GM -> Tools -> Control Center, 选刚才打开的地图, 按 Metadata .. (元数据)
- 记下东南西北的经纬度 (Copy to Clipboard)
(iii) OruxMapsDesktop
- 把 .jgw 改作 .jpw (拷一份亦可)
- 打开 OruxmapsDesktop
- Calibration file: .jpw
- Image file: .jpg
- DATUM: WGS 1984
- Projection: MERCATOR, Longitude Or. = 0
- 选 Geographical
- P1 (左上角), Longitude/Latitude: 刚才记下的西向经度/北向纬度
- P2 (右下角), Lon./Lat.: 东向经度/南向纬度
- ....
为什么不在 OruxMapsDesktop 利用世界文件的 Mercator 网格坐标 (grid coordinate)
直接生成地图包? 因为 OruxMapsDesktop 用网格坐标计算出来的经纬度是错的.
所要利用GM读取地图的经纬度.
2. JPG地图输出/文件生成
在输出JPG是最好同时输出世界文件(.jgw). 把.jgw改成.jpw就可用作 OruxMapsDesktop 所要的
Calibration File.
即使要输出两个相同边界的地图, 在第二次输出时可以在导出边界中选
‘复位到最后输出的范围内' (Reset to Last Export Bounds). 即最底的按钮.
3. 地图的大小
在 OruxMapsDesktop 中选jpeg format, quality=75%.
100% JPG qulaity 是没有意义的. 在电脑屏幕(96-120dpi)上,
100%与75% quality的JPG肉眼看来区别不大. 如果文字与线条不多,
甚至分不出来. 更可况在手机屏幕(>200dpi)!
你所引述的这个方法太啰嗦,根本不需要这么复杂的步骤,至于是不是这个原因引起的我没做实验,不予置评。
我看了map369产生的pnw文件,里面记录的是Lat/Lon经纬度坐标,如果你用GM来合成输出的话,你不用设置任何投影系,用默认打开的就可以了【默认的是Geographic(Lat/Lon),基准参考是WGS84,不是的话请设置到这个】,然后你可以直接输出jpg文件,同时输出世界文件(.jgw),导出边界为“全部加载的文件”,不需要做其它任何操作了。
至于OruxMapsDesktop的操作,你已经知道怎么做了。
希望这段话对你有所作用,等你的实验结果。
大哥晚上好!
感谢提点。小弟按您的思路尝试,总结如下:
1)由于小弟要拼接78张 1280*1792 的瓦片,拼接后的文件及分辨率太大,GM无法输出 JPG 文件,错误提示如下图。
2)改为输出 PNG 文件,若按大哥思路“不用设置任何投影系,用默认打开的就可以”直接输出 PNG,拼接后的图片横向分辨率与原来 1280*78=99840 不一致,横向分辨率被拉大变为 108825,见下图。
3)按 epic 大哥思路输出前修改为 web mercator 投影后输出 PNG,拼接后的图片横向分辨率与原来 1280*78=99840 一致,见下图。
综上所述,输出前修改 web mercator 投影是有必要的。
请教 笨笨猪1111 大哥,如何用 Map369截取;用GM拼接输出;用 OruxMaps Desktop 转制输出多个分块的地图文件(避免地图文件太大),才能在安卓端移动地图时实现无缝连接显示呢?谢谢!
弱弱地问一下。为什么不用moabc…jpg输出的优点是?
Map369可以输出没偏移的 Google 卫星图+地标.
Oruxmaps 不能做到独立地图的无缝连接. 唯一办法是合并地图成一个大图.
建议用16/17级地图就够了. 18级或以上的卫星图纯粹是16级的数码放大.
GM 及 OruxMapsDesltop 输出时用75%的JPG.
数码地图的四角坐标是以四角像素的中心为准. 所以图1与图2的坐标不会重叠.
以图1右上角与图2左上角的经度为例:
- 两角相差1px (像素), 19级地图每各像素约0.3m
- 两角经度差 = 113.082275391 - 113.082272708 = 0.000002683
- 0.000002683 * 60 * 60 * 30 (每角秒约30m) = 0.289764m
原来是这样,暂时没用到orux