当前位置: 首页 > 知识库问答 >
问题:

“`--decode\u raw”的Google protocol buffers协议命令中的“未能分析输入”``

鲁文昌
2023-03-14

我有一个来自OpenStreetMap的谷歌协议文件,特别是我有来自Geofabrik的1.4MB列支敦士登国家/地区摘录。命令说它使用--decode_raw选项“将原始标签/值写入标准输出”。但是我一直收到这个错误:

$ cat liechtenstein-latest.osm.pbf | protoc --decode_raw
Failed to parse input.

我已经直接从Google编译并安装了原型库,版本2.6.1是当前版本。

这个文件是有效的,各种读取pbf文件的OpenStreetMap工具(osm2pgsql、Osmission)都可以很好地读取它。

可能有什么问题?我如何才能让--decode\u raw工作?我做错什么了吗?

共有1个答案

逄俊贤
2023-03-14

OpenStreetMap。osm。pbf格式不是原始协议缓冲区。格式记录如下:

http://wiki.openstreetmap.org/wiki/PBF_Format

关键报价:

格式是以下内容的重复序列:

  • int4:按网络字节顺序排列的BlobHeader消息的长度
  • 序列化BlobHeader消息
  • 序列化Blob消息(大小在标头中给定)

因此,您需要先读取四个字节,将它们解释为整数(big-endian),然后读取这么多字节并解析为BbloHeader,这反过来会告诉您要读取多少字节并解析为Blob

protoc工具不会自动执行此操作,因为它不知道此格式。可能有一个特定于OSM的工具可以使用。

 类似资料:
  • 物联网核心在人、机、云之间的信息互联,因此智能设备、云端、手机端会通过各种协议进行数据的交换,包括网络、蓝牙、USB、 ZigBee 等种种通信协议,实现万物互联的效果,因此在物联网安全分析中,对其中的通信协议的分析是关键的一环,本节将对常见的通信协议进行分析。

  • 本文向大家介绍mysql 协议的ping命令包及解析详解及实例,包括了mysql 协议的ping命令包及解析详解及实例的使用技巧和注意事项,需要的朋友参考一下 mysql 协议的ping命令包及解析详解 前言: MySQL客户端可以用ping命令来检查服务端的状态,正常会返回ok包。 mysql通信报文结构 类型 名字 描述 int<3> payload长度 按照the least signifi

  • 我已经在我的CentOs中安装了协议2.5.0, 当我执行命令proc--version时,它会产生 LIBProc 2.5.0 作为输出。 但一旦我从git中提取代码,当我尝试使用Maven3编译它时,proto模块抛出错误,说, Prococ失败错误: /bin/sh: Prococ:命令未找到 我参考了许多博客,也尝试改变我的bashrc路径如下, 导出JAVA_HOME=/opt/java

  • 我目前在我的protoc.exe.旁边有一个名为addressbook.proto的文件,我在生成. h和. cc文件时遇到了困难 然而,我得到以下回应 关于我可能做错了什么有什么建议吗?

  • Git 可以通过两种主要的方式在版本库之间传输数据:“哑(dumb)”协议和“智能(smart)”协议。 本节将会带你快速浏览这两种协议的运作方式。 哑协议 如果你正在架设一个基于 HTTP 协议的只读版本库,一般而言这种情况下使用的就是哑协议。 这个协议之所以被称为“哑”协议,是因为在传输过程中,服务端不需要有针对 Git 特有的代码;抓取过程是一系列 HTTP 的 GET 请求,这种情况下,客

  • 谢谢你! 我不认为这个问题是由一个接受许可协议的问题引起的(那只是下载),我认为这与一个buggy rpm包有关。发布这个RPM-I安装,java工作吗?您能导航到/usr/java/jdk1.7.0_07/jre/bin并运行Java吗?