Так что я сейчас пытаюсь получить некоторые данные карты, предоставляемые сторонним провайдером. Они ничего нам не дали, кроме дампа данных, поэтому нет документации или контактной точки, чтобы увидеть, что они использовали ранее.Parsing ESRI Shapefiles в Ruby
У меня есть 4 файла:
30083_parcel.dbf
30083_parcel.prj
30083_parcel.shp
30083_parcel.shx
Теперь, не вдаваясь в ненужные детали, я уже удалось извлечь, и получить работу данные от dbf
prj
и shp
файлов. Однако у меня много проблем с shx
.
на запись Википедии о спецификации для SHX файлов:
The index contains the same 100-byte header as the .shp file, followed by any number of 8-byte fixed-length records which consist of the following two fields:
Bytes Type Endianness Usage
0–3 int32 big Record offset (in 16-bit words)
4–7 int32 big Record length (in 16-bit words)
Итак, я пытался что-то вдоль этих линий:
File.open('test.txt') do|file|
until file.eof?
buffer = file.read(100)
# Do something with buffer
puts buffer
end
end
И все, что я получаю некоторые сумасшедшие персонажи, как H
, �
и P
. Я не уверен, куда идти, чтобы получить что-нибудь более полезное для получения смещения записи и длины записи.
Любые идеи? Я подумал, используя file.read(100)
, что получаю заголовки и, по крайней мере, могу их видеть, но это не так. И после попытки получить доступ к остальным после первых 100 байт, я получаю аналогичный случайный юникод.
В то время, когда я был бы открыт для нерубинных решений.
Нескольких идей для ресурсов: [ESRI Whitepaper о шейпфайлах] (https://www.esri.com/library/whitepapers/pdfs/shapefile .pdf), сообщение в блоге о [shapefiles in ruby] (http://www.andresblog.net/ruby-on-rails/opening-a-shapefile-using-ruby-on-rails/) и [некоторый код на github, который может помочь] (https://github.com/nofxx/georuby/) – Erica