我最近对地理信息系统并且不知道在 LaTeX 中绘制地图/边界/位置的支持有多少。pst-geo
提供了一些映射功能,特别是在 PostScript 级别。我有兴趣以边界文件的形式创建更开放/可用的东西,这些边界文件具有易于访问的边界/形状的纬度/经度坐标,类似于 KML 文件提供的。但是,我可以看到,当考虑整个地球时(管辖区内的管辖区内的管辖区,...),这很容易失衡。
随着时间的推移,可能会有更多、更详细的数据可用,从而增加数据集的大小。
我正在寻找以下问题的答案:
- 解决这个问题的最佳方法是什么,特别是从其位置来看加拿大运输安全局?
- 我认为要求用户在计算机上安装整个数据集是不合理的。怎么会要求用户零零碎碎地安装大型数据集呢?
- 所有内容是否都会托管在 CTAN 上,还是我需要在自己的服务器上托管大型“外部”数据集?
以下是我对此的看法:
- 创建一些基础级别的包,比如说
gis-maps
; 允许用户加载模块,可能特定于使用
\usepackage[italy,south-africa,canada]{gis-maps}
或者
\usepackage{gis-maps} \gissetup{maps={italy,south-africa,canada},...}
这将加载特定于这些管辖区的辅助宏列表。例如,基于国家代码,上述内容可能会创建类似的东西
\drawITA
,\drawZAF
和\drawCAN
(以及许多其他宏,可能基于某种地理层次结构)。- 以上模块还将加载边界的坐标。
- 基础包和模块可能很大,但仍然可以管理。但是,数据集本身会非常大。因此,应该包括如何将它们作为手动添加项添加到您的分发版的说明,例如添加到类似的位置
texmf-local
。我不知道这将如何工作...
保持冷静,我不会包括任何藏宝图...
答案1
我是根据问题评论中的要求写这个答案的,其中融入了 Bruno Le Floch 的一些想法。由于我对 KML 语法一无所知,因此非常欢迎您提出这方面的建议!
维护特定于 TeX 版本的数据集可能不是理想的解决方案。首先,它效率低下,因为它需要重复其他地方已经完成的维护工作。其次,我认为 TeX 社区不太可能长期很好地维护庞大的数据集,尤其是那些与系统没有内在联系的数据集。
因此,最好将这个问题视为需要两件事:
- 识别或创建适合一般用途的数据集;
- 设计和维护 TeX 与这些数据集交互的方式,也许使用脚本。
因此,正如 Bruno Le Floch 所阐述的那样,这个想法是让用户根据需要下载多用途 KML 文件。可以提供一个脚本来下载这些文件,并将其中有用的信息子集提取为 TeX 可以直接用于排版的格式。这本身不需要用 TeX 代码编写。
一种选择是使用类似 perl 的程序,这样可以使脚本在 TeX Live 支持的平台上可用,例如,因为 TL 本身依赖于用 perl 编写的脚本。(在 Windows 的情况下,TL 本身提供 perl;OS X、GNU/Linux 等已经有可用的 perl。)perl 用于 egreg 提到的 getnonfreefonts 脚本。
然后提供一个包来与提取的信息子集进行交互,提供用户友好的宏来在文档中利用这些信息。由于提取的子集比原始 KML 数据集小,因此解析速度更快,从而加快排版速度。由于提取将编写脚本,因此通过从数据集的原始来源重新下载和重新提取信息可以轻松进行更新。在时效性确实至关重要的情况下,可以通过让 TeX 在排版期间运行下载和提取脚本来自动管理更新。但我认为这在大多数情况下都不是很有用。
这将解决几个问题:
- 由于 KML 文件可以随意存储在任何地方,因此存储庞大数据集的问题将不复存在。
- 这将避免 TeX 社区内重复工作的问题,因为其他地方的社区(可能规模更大、装备更好)可以更好地完成这项工作。
- 此外,Bruno Le Floch还指出,它将允许用户转换和使用自己的私人 KML 文件。
- 事实上,它允许使用来自任何来源的 KML 文件,并且如果在其他上下文中使用具有类似语法的文件,则可以轻松推广。(我对 KML 一无所知,所以这纯粹是一个理论/假设的观点!)