filonenko-mikhail/cl-ewkb
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
master
Could not load branches
Nothing to show
Could not load tags
Nothing to show
{{ refName }}
default
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code
-
Clone
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more.
- Open with GitHub Desktop
- Download ZIP
Sign In Required
Please sign in to use Codespaces.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
cl-ewkb is a geospatial library, based on cl-wkb, that implements the OGC Well-Known Binary geographic geometry data model with PostGIS 3d, 4d extensions, and provides WKB and EWKB encoding and decoding functionality. cl-wkb author is J.P. Larocue. Library also provide module cl-wkb, which has CLOS-based API like http://enroutesystems.com/software/cl-wkb/ with PostGIS extensions. Depends on: ieee-floats flexi-streams PostGIS extension WKB is described in postgis-1.5/doc/ZMSgeoms.txt All extensions are supported: 3dz, 3dm, 4d, embedded SRID. Exported structs point-primitive x y pointz-primitive x y z pointm-primitive x y m pointzm-primitive x y z m point-primtive structs contain coordinates (2d, 3d, 4d) linear-ring points-primitive linear-ring struct contains array of point-primitive geometry type srid geometry parent struct for other types and also contains "GEOMETRYCOLLECTION" point type srid point-primitive line-string type srid points-primitive polygon type srid linear-rings multi-point type srid points multi-line-string type srid line-strings multi-polygon type srid polygons geometry-collection type srid geometries Exported functions (decode octets) Decode from wkb sequence (decode-from stream) Decode from wkb stream Functions for encoding: (encode object endianness) Encode object to vector (encode-to object stream endianness) Encode object to stream with endianness Example: Getting data from postgresql and decode it: (decode (caar (postmodern:query (:select (:ST_AsEWKB "SRID=4326;LINESTRING(0 0 1 2, 1 1 2 3, 2 2 3 4)"))))) Result: #(CL-EWKB::GISGEOMETRY 3758096386 4326 #(CL-EWKB::LINEAR-RING #(#(CL-EWKB::POINT-PRIMITIVE 0.0d0 0.0d0 CL-EWKB::POINTZ-PRIMITIVE 1.0d0 CL-EWKB::POINTZM-PRIMITIVE 2.0d0) #(CL-EWKB::POINT-PRIMITIVE 1.0d0 1.0d0 CL-EWKB::POINTZ-PRIMITIVE 2.0d0 CL-EWKB::POINTZM-PRIMITIVE 3.0d0) #(CL-EWKB::POINT-PRIMITIVE 2.0d0 2.0d0 CL-EWKB::POINTZ-PRIMITIVE 3.0d0 CL-EWKB::POINTZM-PRIMITIVE 4.0d0))) CL-EWKB::LINESTRING) Drawing data with opengl (using cl-opengl): Draw pointXX-primitive (defun draw-point-primitive (point) (cond ((point-primitive-p point) (gl:vertex (point-primitive-x point) (point-primitive-y point))) ((pointz-primitive-p point) (gl:vertex (point-primitive-x point) (point-primitive-y point) (pointz-primitive-z point))) ((pointm-primitive-p point) (gl:vertex (point-primitive-x point) (point-primitive-y point) 0.0 (pointm-primitive-m point))) ((pointzm-primitive-p point) (gl:vertex (point-primitive-x point) (point-primitive-y point) (pointz-primitive-z point) (pointzm-primitive-m point))))) Drawing objects (defun draw-point (point) (gl:with-primitives :points (draw-point-primitive (point-primitive point)))) (defun draw-points (line-string) (gl:with-primitives :line-strip (map 'nil (lambda (point) (draw-point-primitive point)) (line-string-points-primitive line-string)))) General drawing function (defun draw-gisobject (object) (cond ((point-p object) (draw-point object)) ((line-string-p object) (draw-points object))))
About
Common Lisp PostGIS EWKB data model and encoder/decoder
Resources
Stars
Watchers
Forks
Packages 0
No packages published