Packages
geo
0.10.1
4.1.0
4.0.1
4.0.0
3.6.0
3.5.1
3.5.0
3.4.3
3.4.2
3.4.1
3.4.0
3.3.8
3.3.7
3.3.5
3.3.4
3.3.3
3.3.2
3.3.1
3.3.0
3.2.0
3.1.0
3.0.0
2.1.0
2.0.0
1.5.0
1.4.1
1.4.0
1.3.1
1.3.0
1.2.1
1.2.0
1.1.2
1.1.1
1.1.0
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.18.0
0.17.0
0.16.1
0.16.0
0.15.2
0.15.1
0.15.0
0.14.0
0.13.0
0.12.0
0.11.2
0.11.1
0.11.0
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.0
0.7.2
0.7.1
0.6.1
0.5.1
Encodes and decodes WKB, WKT, and GeoJSON formats.
Current section
Files
Jump to
Current section
Files
lib/geo/wkb/reader.ex
defmodule Geo.WKB.Reader do
@moduledoc false
defstruct wkb: nil, endian: :xdr
def start(wkb) do
endian = if String.to_integer(String.slice(wkb, 0,2), 16) > 0 do
:ndr
else
:xdr
end
%Geo.WKB.Reader{ wkb: String.slice(wkb, 2, String.length(wkb)), endian: endian }
end
def read(reader, count) do
value = String.slice(reader.wkb, 0, count)
if reader.endian == :ndr do
value = Geo.Utils.reverse_byte_order(value)
end
{ value, %{ reader | wkb: String.slice(reader.wkb, count, String.length(reader.wkb)) } }
end
def get_wkb(reader) do
reader.wkb
end
def eof?(reader) do
String.length(reader.wkb) == 0
end
end