【问题标题】:How to parse mif file?如何解析mif文件?
【发布时间】:2019-12-16 14:21:22
【问题描述】:

有人可以建议如何解析 .mif 文件的数据吗?

REGION 1
5
-3010.162251 24759.203912
-3013.594507 24746.897137
-3000.110586 24742.400469
-2996.511292 24755.084298
-3010.162251 24759.203912
BRUSH(1,0)
REGION 1
7
3102.893 -1432.264
3198.267205 -1508.743575
3219.752759 -1481.67002
3140.143659 -1415.623655
3134.753948 -1411.037831
3126.016 -1408.663
3102.893 -1432.264
BRUSH(1,0)

文件具有这种结构。对于每种类型(Region、Pline 等),都有可选参数(例如画笔)。如何检查对象是否具有这些参数? 我是否需要尝试将文件解析为逻辑块?

【问题讨论】:

  • 我可以看到每个区域都以 REGION 开头。 Аs 结果每个区域都以 REGION 结尾,因此您可以将整个区域读取为原始字符串,删除坐标并分析剩下的内容。
  • 读一行。如果它以“BRUSH”开头,那么您应该修改您当前正在解析的区域对象。如果它以“REGION”(或“PLINE”等)开头,那么您当前的区域(如果有的话)已经完成,您应该准备一个新的区域对象。

标签: java parsing gis


【解决方案1】:

我可以看到很多方法来解析它。一切都取决于您希望它有多快、文件有多大以及该解析将如何映射到内存(相应的实体)中。

我认为使用正则表达式是创建解析规则的最简单方法,尽管不是更快。 我会逐行阅读,然后:

  • 使用表达式 REGION [0-9]+

  • 检查区域的新开始
  • (任何时候)通过 -?\d*.\d+|\d+.\d*$ -?\d*.\d+|\d+.\d*$

    检查坐标模式>
  • 在上一次检查发生任意次数后,收集此行中存在的信息。您可以在此处进行大量验证,以确保您仅在此处获得所需的信息。

Java 正则表达式教程:https://www.vogella.com/tutorials/JavaRegularExpressions/article.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-27
    • 2010-09-22
    • 2021-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多