几年来,我一直在处理用于维基百科的俄语和其他语言部分的地图。 我总共创建了300多张卡片 。 我不是专业的制图师,并且在这一领域没有特殊的教育。 显然,我只是喜欢制作卡片:)
在本文中,我想分享为Wikipedia创建地图的经验,重点是位置地图。

加拿大的实物图
位置卡
在免费许可下发布的所有Wikipedia图形材料都放置在Wikimedia Commons上 ,这使您可以在任何Wikimedia项目和Wikipedia的所有语言部分中使用它们。
在Wikipedia上的所有类型的地图中,所谓的“位置地图”都很突出。 这里的特殊之处在于它不仅是地图的图像,而且是已知投影中的图像,并且具有已知的角地理坐标。 对于此类地图,将在使用该语言的每个语言部分中创建一个描述此元数据的特殊模板。 有了这样的模板,我们可以通过在地图顶部放置我们感兴趣的对象的标记,将其应用于任何页面。 对象的坐标以地理坐标的形式描述,模板中的公式可精确计算将标记放置在何处。 因此,例如,您可以在有关区域的页面上插入该区域的地图,并在其上标记区域中心和大城市。

在有关Pebble Island的商品卡中使用位置图的示例。 红色标记和题字会自动放置在地图图像上方对象的位置上。
位置图用于所有有关行政单位的文章:国家/地区/城市/城镇等,以及许多有关地理对象的文章。 通常会在创建位置图后立即将其用于20-50条现有的Wikipedia文章中。
从理论上讲,位置地图模板应一次使用两个地图绘图:“轮廓” /“政治”地图以及具有相同坐标,投影和尺寸的“物理” /“地理”地图。 轮廓图通常是矢量(SVG),物理图可以是矢量,但最常见的是栅格(通常为PNG)。

具有两种类型的地图的位置地图模板的示例
位置地图有很多:它们必须涵盖从整个世界到各个区域,小岛等的所有层次。 除了位置图,所谓的 “定位器”是一张地图,上面以亮色突出显示了我们感兴趣的区域(定位器地图的示例 )。 在带有位置图的“较高”级别(世界,国家)上,一切都相对好,但是在“较低”(区级),一切通常都很糟糕:没有位置图或有,但是质量很差,或者以不适当/非标准的样式制作。
仅对于俄罗斯联邦,我们就有83个实体,如果在其中添加地区,我们可能已经收到了上千个或更多的行政单位,每个行政单位都需要一个位置图,包括等高线图,物理图,定位器图……此外,还不时地“新决议已经出台”的形式有所变化:法律文件的出现改变了行政单位的边界,将其划分/合并等。 当然,在所有这些情况下,您都需要重绘一个或多个位置图。
总的来说,我认为您已经了解了-卡非常必要,而且它们非常需要:)
地图的源数据
对于位置图,必须使用具有免费许可证的图像。 这意味着此类卡的源数据必须是免费的。
我使用的卡的初始数据:
- OpenStreetMap-矢量数据的主要来源; 但请记住,数据是通过众包获得的,因此在某些地方它们是密集且高质量的,在某些地方它们是非常不完整的。 数据中也有错误,因此必须仔细检查收到的卡。
- GSHHG-GMT的一部分的矢量数据(见下文); 可用于大比例尺的地图,不适合小比例尺的地图。
- ETOPO1(分辨率〜1.85 km,容量〜890 MB),ETOPO2(分辨率2'〜= 3.6 km)-高度图,包括海床浮雕(测深法)。
- TOPO30(分辨率〜= 0.9 km,体积〜1800 MB)-高度图,包括海底地形。
- GLOBE(分辨率30“〜= 0.9 km)-高度图。
- SRTM (分辨率SRTM3:3“〜= 90m)是一个相当详细的高度图,但是由于它非常重(每个具有1x1度数据的文件的重约2.8 MB),因此您通常只需要下载必要的文件此外,SRTM源数据中的间隙需要通过对相邻点的缺失点进行插值来弥补,您可以自己进行操作,也可以使用“空洞填充”的源(例如SRTM-Plus)。SRTM仅是用于土地的高度图,不包含海底地形数据。
投影
在绝大多数情况下,我们使用的投影称为“等距圆柱”。 所有主要的网络地图使用的墨卡托投影及其特殊情况-“ Google投影”或“ Web墨卡托投影”属于同一系列的投影。 此投影的公式非常简单,此外,位置图模板已经“知道”此投影。
在剩下的少数情况下,您将必须谷歌搜索所需的投影并阅读特殊文献,以了解如何从纬度和经度准确地获得x,y坐标。 Mediawiki具有一种用于计算表达式(包括具有三角函数的表达式)的发达机制,即使在其上创建位置图模板之前,也可以将其用于检查地图(示例可在此处找到)。
地图工具
有很多用于创建地图的工具(地理信息系统,GIS),包括免费和开源的工具。 但是,要使卡打开,就不必使用开放和免费的系统,只要打开源数据就足够了,这样您就可以在完成的卡上放一个开放许可证。 (但是这里可能有很多细微差别,我不认为是版权的领域,不是我的:)
要创建地图,我主要使用以下三个程序。
射影
Maperitive是免费但私人的产品。 在使用OpenStreetMap数据时,它非常有用,它可以与OSM网站上的数据以及保存的转储一起使用。 允许您选择一个造型师并将地图保存为SVG格式。 有许多现成的设计师,您可以编写自己的设计师。 我已经准备了几个样式文件,并使用它们将区域的边界导出到SVG,并使用定居点将区域自身的地图导出。
一般而言,通用地图绘制工具(GMT)是一组免费的命令行实用程序,旨在处理和可视化科学数据,包括许多允许您使用地理数据的工具,即 我们可以将GMT用作控制台GIS。 作为一系列调用实用程序的结果,可以获取完成的地图(或将来的地图的单独图层)。 通常,我编写一个批处理文件,在其中设置所有参数并调用实用程序。 乍一看,它看起来很复杂,但是作为一名程序员,这种方法对我来说似乎很清楚并且很熟悉。 另外,这里提供了可重复性:为了再次创建地图,我总是可以再次运行脚本。
批处理文件示例(另请参见此处 ):
set PATH=C:\programs\GMT5\bin;%PATH% set GSBIN=C:\PROGRA~1\gs\gs9.04/bin set COORDSCUT=144.7492/157.3007/42.9694/51.3837 rem width = xmaxsvg / 150.0 * 2.54 set PAPERX=14.9352 rem height = ymaxsvg / 150.0 * 2.54 set PAPERY=16.0189333333333 grdcut.exe ETOPO1_Bed_g_gmt4.grd -R%COORDSCUT% -Gh_cor_cut.grd grdgradient h_cor_cut.grd -Ne0.3 -A315 -M -Ghi.grd grdimage h_cor_cut.grd -Ihi.grd -Cwiki-water-verlauf2.cpt -P -R%COORDSCUT% -JX%PAPERX%cd/%PAPERY%cd --PAPER_MEDIA=Custom_%PAPERX%cx%PAPERY%c -X0 -Y0 -K > map.eps pscoast.exe -JX%PAPERX%cd/%PAPERY%cd -R%COORDSCUT% -Gc -P -Df --PAPER_MEDIA=Custom_%PAPERX%cx%PAPERY%c -X0 -Y0 -O -K >> map.eps grdimage h_cor_cut.grd -Ihi.grd -Cmount.cpt -P -R%COORDSCUT% -JX%PAPERX%cd/%PAPERY%cd --PAPER_MEDIA=Custom_%PAPERX%cx%PAPERY%c -X0 -Y0 -O -K >> map.eps pscoast.exe -JX%PAPERX%cd/%PAPERY%cd -R%COORDSCUT% -Q -P -Df --PAPER_MEDIA=Custom_%PAPERX%cx%PAPERY%c -X0 -Y0 -O -K >> map.eps pscoast.exe -JX%PAPERX%cd/%PAPERY%cd -R%COORDSCUT% -Na -Ia/0.25p,#0978AB -W0.25,#0978AB -P -Df --PAPER_MEDIA=Custom_%PAPERX%cx%PAPERY%c -X0 -Y0 -O >> map.eps %GSBIN%\gswin32c.exe -dSAFER -dBATCH -dNOPAUSE -dGraphicsAlphaBits=4 -sDEVICE=pngalpha -dEPSCrop -r150 -sOutputFile=Oblast_etopo.png map.eps
结果:

作为GMT的一部分,还提供了命令行工具以及数据,该数据集称为GSHHG ,可以使用GMT中包含的pscoast
实用程序从这些数据中创建地图。
墨迹
Inkscape是一个免费且开放的矢量图形编辑器,其主要格式为SVG。
我通常将Maperitive和GMT用作准备未来地图各层的工具。 然后,将生成的图层导入到Inkscape文档中的单独图层中,并且地图上的所有最终工作都已经存在。 因此,例如,对于位置图,必须“突出显示”地图上显示的区域-轮廓图上带有颜色,物理图上带有阴影。 这已经是Inkscape中对象和图层上的手动工作。
准备地图图像的最后一步是保存SVG(用于矢量地图)或导出PNG(用于栅格)。
地图创建过程
- 我通常先从未来地图的区域开始,然后查看该区域的原始数据。 我通过GMT在GSHHG数据上创建了原始等高线图,尝试在ETOPO1,TOPO30数据上渲染同一区域的浮雕,并在OpenStreetMap中观察该区域的外观。 如果我发现可用数据不足或它们的质量较差,包含错误或差距较大,那么我会拒绝在此阶段创建地图。
- 此外,根据近似渲染图,我选择要在哪些数据上绘制地图。
- 创建单独的地图图层。 通常,分别获得单独的边界层(例如,来自OSM的矢量),单独的陆地浮雕图像和单独的水下浮雕层(测深法),单独的海岸线层以及河流和水库层。 经常会发生两个栅格图层具有不同的分辨率的情况,在这里您必须使用插值法,以便它们在一起看起来或多或少都是有机的。 例如,从ETOPO1获取土地的土地地图是因为该区域可以更好地表示该区域,而测深图则是从TOPO30获取的,并且这两个来源的分辨率相差一半。 然后,对于较低的分辨率,我们通过插值来提高分辨率,以免出现“正方形”,不出现莫尔条纹等。
- 使用Inkscape,我们可以将地图的各个图层组合在一起。 如有必要,我们会进行必要的体力劳动。 我们尝试将地图导出到栅格,仔细考虑并确定缺陷,然后进行纠正和重复。 结果是准备好要上载到Wikimedia Commons的地图文件。
- 我们将地图文件上传到Wikimedia Commons,并在那里进行文档编制。 每个文件都应写明它是什么类型的地图,什么对象,什么坐标和什么投影,使用哪些源数据和哪些许可证,完成工作的工具。
- 我们在ru-wiki中创建或更新位置地图模板,请检查其用法。 我们确保物体在地图上的正确位置,即 正确设置了地图拐角的坐标,并且地图本身对应于这些坐标。 之后,我们将在其他语言部分中更新此位置图的模板。
结论
我花了20到30分钟的时间来创建一张地图(在简单情况下,如在传送带上完成一系列相同类型的区域地图),长达4到6个小时(在困难情况下,当源数据存在问题并且需要进行大量手动操作时)工作)。 花了几天时间绘制了加拿大的实物图(请参阅KDPV):我花了我拾起轮廓图上已经使用的投影。
如果我们谈论“我从中得到什么”,那么大概-从什么样的卡片中获得了很多美学上的乐趣。
谢谢您的阅读,希望我的经验会以某种方式派上用场:)