123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875 |
- ;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
- ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
- ;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
- ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
- ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
- ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
- ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
- ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
- ;;;
- ;;; This file is part of GNU Guix.
- ;;;
- ;;; GNU Guix is free software; you can redistribute it and/or modify it
- ;;; under the terms of the GNU General Public License as published by
- ;;; the Free Software Foundation; either version 3 of the License, or (at
- ;;; your option) any later version.
- ;;;
- ;;; GNU Guix is distributed in the hope that it will be useful, but
- ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
- ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ;;; GNU General Public License for more details.
- ;;;
- ;;; You should have received a copy of the GNU General Public License
- ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
- (define-module (gnu packages geo)
- #:use-module (guix build-system cmake)
- #:use-module (guix build-system glib-or-gtk)
- #:use-module (guix build-system gnu)
- #:use-module (guix build-system go)
- #:use-module (guix build-system python)
- #:use-module (guix build-system scons)
- #:use-module (guix build-system r)
- #:use-module (guix download)
- #:use-module (guix git-download)
- #:use-module ((guix licenses) #:prefix license:)
- #:use-module (guix packages)
- #:use-module (guix utils)
- #:use-module (gnu packages boost)
- #:use-module (gnu packages check)
- #:use-module (gnu packages compression)
- #:use-module (gnu packages databases)
- #:use-module (gnu packages datastructures)
- #:use-module (gnu packages documentation)
- #:use-module (gnu packages fontutils)
- #:use-module (gnu packages glib)
- #:use-module (gnu packages gnome)
- #:use-module (gnu packages gtk)
- #:use-module (gnu packages image)
- #:use-module (gnu packages icu4c)
- #:use-module (gnu packages lua)
- #:use-module (gnu packages pcre)
- #:use-module (gnu packages perl)
- #:use-module (gnu packages pkg-config)
- #:use-module (gnu packages python)
- #:use-module (gnu packages python-xyz)
- #:use-module (gnu packages sqlite)
- #:use-module (gnu packages web)
- #:use-module (gnu packages webkit)
- #:use-module (gnu packages wxwidgets)
- #:use-module (gnu packages xml))
- (define-public geos
- (package
- (name "geos")
- (version "3.7.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://download.osgeo.org/geos/geos-"
- version
- ".tar.bz2"))
- (sha256
- (base32
- "1mrz778m6bd1x9k6sha5kld43kalhq79h2lynlx2jx7xjakl3gsg"))))
- (build-system gnu-build-system)
- (arguments `(#:phases
- (modify-phases %standard-phases
- (add-after
- 'unpack 'patch-test-shebangs
- (lambda _
- (substitute* '("tests/xmltester/testrunner.sh"
- "tests/geostest/testrunner.sh")
- (("/bin/sh") (which "sh")))
- #t)))))
- (inputs
- `(("glib" ,glib)))
- (home-page "https://geos.osgeo.org/")
- (synopsis "Geometry Engine for Geographic Information Systems")
- (description
- "GEOS provides a spatial object model and fundamental geometric
- functions. It is a C++ port of the Java Topology Suite (JTS). As such,
- it aims to contain the complete functionality of JTS in C++. This
- includes all the OpenGIS Simple Features for SQL spatial predicate
- functions and spatial operators, as well as specific JTS enhanced
- topology functions.")
- (license (list license:lgpl2.1+ ; Main distribution.
- license:zlib ; tests/xmltester/tinyxml/*
- license:public-domain)))) ; include/geos/timeval.h
- (define-public gnome-maps
- (package
- (name "gnome-maps")
- (version "3.26.2")
- (source (origin
- (method url-fetch)
- (uri (string-append "mirror://gnome/sources/" name "/"
- (version-major+minor version) "/"
- name "-" version ".tar.xz"))
- (sha256
- (base32
- "0l40l7m9dyphvasiq1jxrn6ivavs1xwzn0bzz2x1z7x73955q783"))))
- (build-system glib-or-gtk-build-system)
- (arguments
- `(#:configure-flags ;; Ensure that geoclue is referred to by output.
- (list (string-append "LDFLAGS=-L"
- (assoc-ref %build-inputs "geoclue") "/lib")
- (string-append "CFLAGS=-I"
- (assoc-ref %build-inputs "geoclue") "/include"))
- #:phases
- (modify-phases %standard-phases
- (add-after 'install 'wrap
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
- (goa-path (string-append
- (assoc-ref inputs "gnome-online-accounts")
- "/lib"))
- (webkitgtk-path (string-append
- (assoc-ref inputs "webkitgtk")
- "/lib")))
- (wrap-program (string-append out "/bin/gnome-maps")
- `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
- ;; There seems to be no way to embed the path of
- ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37 and
- ;; libjavascriptcoregtk-4.0.so.18.
- `("LD_LIBRARY_PATH" ":" prefix (,goa-path ,webkitgtk-path)))
- #t))))))
- (native-inputs
- `(("gobject-introspection" ,gobject-introspection)
- ("intltool" ,intltool)
- ("pkg-config" ,pkg-config)))
- (inputs
- `(("folks" ,folks)
- ("libchamplain" ,libchamplain)
- ("libgee" ,libgee)
- ("libsecret" ,libsecret)
- ("libsoup" ,libsoup)
- ("libgweather" ,libgweather)
- ("libxml2" ,libxml2)
- ("gdk-pixbuf" ,gdk-pixbuf)
- ("glib-networking" ,glib-networking)
- ("geoclue" ,geoclue)
- ("geocode-glib" ,geocode-glib)
- ("gfbgraph" ,gfbgraph)
- ("gjs" ,gjs)
- ("glib" ,glib)
- ("gnome-online-accounts" ,gnome-online-accounts)
- ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
- ("rest" ,rest)
- ("webkitgtk" ,webkitgtk)))
- (propagated-inputs
- `(("gtk+3" ,gtk+)))
- (synopsis "Graphical map viewer and wayfinding program")
- (description "GNOME Maps is a graphical map viewer. It uses map data from
- the OpenStreetMap project. It can provide directions for walking, bicycling,
- and driving.")
- (home-page "https://wiki.gnome.org/Apps/Maps")
- (license license:gpl2+)))
- (define-public libgaiagraphics
- (package
- (name "libgaiagraphics")
- (version "0.5")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://www.gaia-gis.it/gaia-sins/libgaiagraphics-"
- version ".tar.gz"))
- (sha256
- (base32
- "076afqv417ag3hfvnif0qc7qscmnq1dsf6y431yygwgf34rjkayc"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("cairo" ,cairo)
- ("libpng" ,libpng)
- ("libjpeg-turbo" ,libjpeg-turbo)
- ("libtiff" ,libtiff)
- ("libgeotiff" ,libgeotiff)
- ("proj.4" ,proj.4)
- ("libxml2" ,libxml2)
- ("zlib" ,zlib)))
- (synopsis "Gaia common graphics support")
- (description "libgaiagraphics is a library supporting
- common-utility raster handling methods.")
- (home-page "https://www.gaia-gis.it/fossil/libgaiagraphics/index")
- (license license:lgpl3+)))
- (define-public libgeotiff
- (package
- (name "libgeotiff")
- (version "1.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-"
- version ".tar.gz"))
- (sha256
- (base32
- "0vjy3bwfhljjx66p9w999i4mdhsf7vjshx29yc3pn5livf5091xd"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Remove .csv files, distributed from EPSG under a restricted
- ;; license. See LICENSE for full license text.
- (for-each delete-file (find-files "." "\\.csv$"))
- ;; Now that we have removed the csv files, we need to modify the Makefile.
- (substitute* "Makefile.in"
- (("^all-am: .*$")
- "all-am: Makefile $(LTLIBRARIES) $(HEADERS) geo_config.h\n")
- (("^install-data-am: .*$")
- "install-data-am: install-includeHEADERS"))
- #t))))
- (build-system gnu-build-system)
- (inputs
- `(("libjpeg-turbo" ,libjpeg-turbo)
- ("libtiff" ,libtiff)
- ("proj.4" ,proj.4)
- ("zlib" ,zlib)))
- (arguments
- `(#:configure-flags
- (list (string-append "--with-zlib")
- (string-append "--with-jpeg")
- (string-append "--with-libtiff=" (assoc-ref %build-inputs "libtiff")))))
- (synopsis "Library for handling GeoTIFF (geographic enabled TIFF)")
- (description "libgeotiff is a library on top of libtiff for reading and
- writing GeoTIFF information tags.")
- (home-page "https://trac.osgeo.org/geotiff/")
- ;; This is a mixture of various contributions under different licenses.
- ;; Note that the EPSG database is NOT "free to use" as the LICENSE file
- ;; states, as its commercial redistribution is restricted. Hence, we have
- ;; removed it from the package.
- (license (list license:public-domain
- license:x11
- license:bsd-3
- (license:non-copyleft "file://LICENSE"
- "See LICENSE in the distribution.")))))
- (define-public libspatialite
- (package
- (name "libspatialite")
- (version "4.3.0a")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://www.gaia-gis.it/gaia-sins/libspatialite-"
- version ".tar.gz"))
- (sha256
- (base32
- "16d4lpl7xrm9zy4gphy6nwanpjp8wn9g4wq2i2kh8abnlhq01448"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("freexl" ,freexl)
- ("geos" ,geos)
- ("libxml2" ,libxml2)
- ("proj.4" ,proj.4)
- ("sqlite" ,sqlite)
- ("zlib" ,zlib)))
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- ;; 3 tests are failing, ignore them:
- (add-after 'unpack 'ignore-broken-tests
- (lambda _
- (substitute* '("test/Makefile.in")
- (("\tcheck_sql_stm.*" all) "\tcheck_multithread$(EXEEXT) \\\n")
- (("(\tch.*) check_v.*ble2.*$" all vt1) (string-append vt1 " \\\n"))
- (("\tch.* (check_v.*ble4.*)$" all vt4) (string-append "\t" vt4)))
- #t)))))
- (synopsis "Extend SQLite to support Spatial SQL capabilities")
- (description
- "SpatiaLite is a library intended to extend the SQLite core to support
- fully fledged Spatial SQL capabilities.")
- (home-page "https://www.gaia-gis.it/fossil/libspatialite/index")
- ;; For the genuine libspatialite-sources holds:
- ;; Any of the licenses MPL1.1, GPL2+ or LGPL2.1+ may be picked.
- ;; Files under src/control_points are from GRASS
- ;; and are licensed under GPL2+ only.
- ;; src/md5.[ch]: Placed into the public domain by Alexander Peslyak.
- (license (list license:gpl2+
- license:lgpl2.1+
- license:mpl1.1
- license:public-domain))))
- (define-public proj.4
- (package
- (name "proj.4")
- (version "4.9.3")
- (source (origin
- (method url-fetch)
- (uri (string-append "http://download.osgeo.org/proj/proj-"
- version ".tar.gz"))
- (sha256
- (base32
- "1xw5f427xk9p2nbsj04j6m5zyjlyd66sbvl2bkg8hd1kx8pm9139"))))
- (build-system gnu-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases
- (add-after 'unpack 'patch-test-paths
- (lambda _
- (substitute* '("nad/test27"
- "nad/test83"
- "nad/testvarious"
- "nad/testdatumfile"
- "nad/testflaky"
- "nad/testIGNF")
- (("/bin/rm") (which "rm")))
- #t))
- ;; Precision problems on i686 and other platforms. See:
- ;; https://web.archive.org/web/20151006134301/http://trac.osgeo.org/proj/ticket/255
- ;; Disable failing test.
- (add-after 'patch-test-paths 'ignore-failing-tests
- (lambda _
- (substitute* '("nad/Makefile.in")
- (("\tPROJ_LIB.*" all) (string-append "#" all)))
- #t)))))
- (inputs
- `(("glib" ,glib)))
- (home-page "http://proj4.org/")
- (synopsis "Cartographic Projections Library")
- (description
- "Proj.4 is a library for converting coordinates between cartographic
- projections.")
- (license (list license:expat
- ;; src/PJ_patterson.c
- license:asl2.0
- ;; src/geodesic.c/h
- license:x11
- ;; Embedded EPSG database.
- (license:non-copyleft "http://www.epsg.org/TermsOfUse")
- ;; cmake/*
- license:boost1.0))))
- (define-public mapnik
- (package
- (name "mapnik")
- (version "3.0.18")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/mapnik/mapnik/releases/download/v"
- version "/mapnik-v" version ".tar.bz2"))
- (sha256
- (base32
- "06frcikaj2mgz3abfk5h0z4j3hbksi0zikwjngbjv4p5f3pwxf8q"))))
- (build-system scons-build-system)
- (inputs
- `(("boost" ,boost)
- ("cairo" ,cairo)
- ("freetype" ,freetype)
- ("harfbuzz" ,harfbuzz)
- ("icu4c" ,icu4c)
- ("libjpeg-turbo" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("libwebp" ,libwebp)
- ("libxml2" ,libxml2)
- ("proj.4" ,proj.4)
- ("sqlite" ,sqlite)
- ("zlib" ,zlib)))
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (arguments
- `(#:scons ,scons-python2
- #:scons-flags
- (list "CC=gcc"
- (string-append "PREFIX=" %output)
- (string-append "CUSTOM_LDFLAGS=-Wl,-rpath=" %output "/lib"))))
- (home-page "http://mapnik.org/")
- (synopsis "Toolkit for developing mapping applications")
- (description "Mapnik is a toolkit for developing mapping applications. It
- is basically a collection of geographic objects like maps, layers,
- datasources, features, and geometries. At its core is a C++ shared library
- providing algorithms and patterns for spatial data access and visualization.
- The library does not rely on any specific windowing system and can be deployed
- to any server environment. It is intended to play fair in a multi-threaded
- environment and is aimed primarily, but not exclusively, at web-based
- development.")
- (license (list license:lgpl2.1+
- ;; demo/viewer, demo/python/rundemo.py
- license:gpl2+
- ;; deps/boost, deps/mapbox, deps/agg/include/agg_conv_offset.h
- license:boost1.0
- ;; deps/mapnik/sparsehash
- license:bsd-3
- ;; deps/agg
- (license:non-copyleft "file://deps/agg/copying")))))
- (define-public python2-mapnik
- (package
- (name "python2-mapnik")
- (version "3.0.16")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/mapnik/python-mapnik/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0w7wg72gnwmbjani9sqk42p2jwqkrl9hsdkawahni5m05xsifcb4"))))
- (build-system python-build-system)
- (inputs
- `(("boost" ,boost)
- ("harfbuzz" ,harfbuzz)
- ("icu4c" ,icu4c)
- ("libjpeg-turbo" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("libwebp" ,libwebp)
- ("mapnik" ,mapnik)
- ("proj.4" ,proj.4)
- ("python2-pycairo" ,python2-pycairo)))
- (native-inputs
- (let ((test-data-input
- (lambda (repository version hash)
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/mapnik/" repository
- "/archive/v" version ".tar.gz"))
- (file-name (string-append "python-mapnik-" repository
- "-" version ".tar.gz"))
- (sha256 (base32 hash))))))
- `(("python2-nose" ,python2-nose)
- ;; Test data is released as separate tarballs
- ("test-data"
- ,(test-data-input "test-data" "3.0.18"
- "10cvgn5gxn8ldrszj24zr1vzm5w76kqk4s7bl2zzp5yvkhh8lj1n"))
- ("test-data-visual"
- ,(test-data-input "test-data-visual" "3.0.18"
- "1cb9ghy8sis0w5fkp0dvwxdqqx44rhs9a9w8g9r9i7md1c40r80i")))))
- (arguments
- `(#:python ,python-2 ; Python 3 support is incomplete, and the build fails
- #:phases
- (modify-phases %standard-phases
- ;; Unpack test data into the source tree
- (add-after 'unpack 'unpack-submodules
- (lambda* (#:key inputs #:allow-other-keys)
- (let ((unpack (lambda (source target)
- (with-directory-excursion target
- (invoke "tar" "xvf" (assoc-ref inputs source)
- "--strip-components=1")))))
- (unpack "test-data" "test/data")
- (unpack "test-data-visual" "test/data-visual"))))
- ;; Skip failing tests
- (add-after 'unpack 'skip-tests
- (lambda _
- (let ((skipped-tests (list "test_vrt_referring_to_missing_files"
- "test_unicode_regex_replace"
- "test_proj_antimeridian_bbox"
- "test_render_with_scale_factor")))
- (substitute* "setup.cfg"
- (("\\[nosetests\\]" all)
- (string-append all "\nexclude=^("
- (string-join skipped-tests "|") ")$")))))))))
- (home-page "https://github.com/mapnik/python-mapnik")
- (synopsis "Python bindings for Mapnik")
- (description "This package provides Python bindings for Mapnik.")
- (license license:lgpl2.1+)))
- (define-public spatialite-gui
- (package
- (name "spatialite-gui")
- (version "1.7.1")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://www.gaia-gis.it/gaia-sins/spatialite_gui-"
- version ".tar.gz"))
- (sha256
- (base32
- "1r05dz9pyc8vsd2wbqxcsracpfbaamz470rcyp2myfpqwznv376b"))))
- (build-system gnu-build-system)
- (native-inputs
- `(("pkg-config" ,pkg-config)))
- (inputs
- `(("freexl" ,freexl)
- ("geos" ,geos)
- ("libgaiagraphics" ,libgaiagraphics)
- ("libspatialite" ,libspatialite)
- ("libxml2" ,libxml2)
- ("proj.4" ,proj.4)
- ("sqlite" ,sqlite)
- ("wxwidgets" ,wxwidgets-2)
- ("zlib" ,zlib)))
- (synopsis "Graphical user interface for SpatiaLite")
- (description "Spatialite-gui provides a visual interface for viewing and
- maintaining a spatialite database. You can easily see the structure of the
- tables and data contents using point and click functions, many of which
- construct common SQL queries, or craft your own SQL queries.")
- (home-page "https://www.gaia-gis.it/fossil/spatialite_gui/index")
- (license license:gpl3+)))
- (define-public gdal
- (package
- (name "gdal")
- (version "2.2.4")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "http://download.osgeo.org/gdal/" version "/gdal-"
- version ".tar.gz"))
- (sha256
- (base32
- "1951f7b69x3d1vic0rmq92q8f4bj3hbxnxmj5jl0cc3zg0isgmdr"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- ;; TODO: frmts contains a lot more bundled code.
- (for-each delete-file-recursively
- ;; bundled code
- '("frmts/png/libpng"
- "frmts/gif/giflib"
- "frmts/jpeg/libjpeg"
- "frmts/jpeg/libjpeg12"
- "frmts/gtiff/libtiff"
- "frmts/gtiff/libgeotiff"
- "frmts/zlib"
- "ogr/ogrsf_frmts/geojson/libjson"))))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f
- #:configure-flags
- (let-syntax ((with (syntax-rules ()
- ((_ option input)
- (string-append option "="
- (assoc-ref %build-inputs input))))))
- (list
- ;; TODO: --with-pcidsk, --with-pcraster
- (with "--with-freexl" "freexl")
- (with "--with-libjson-c" "json-c")
- (with "--with-png" "libpng")
- (with "--with-webp" "libwebp")
- (with "--with-gif" "giflib")
- (with "--with-jpeg" "libjpeg-turbo")
- (with "--with-libtiff" "libtiff")
- (with "--with-geotiff" "libgeotiff")
- (with "--with-libz" "zlib")
- "--with-pcre"))
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'fix-path
- (lambda _
- (substitute* "frmts/mrf/mrf_band.cpp"
- (("\"../zlib/zlib.h\"") "<zlib.h>")))))))
- (inputs
- `(("freexl" ,freexl)
- ("geos" ,geos)
- ("giflib" ,giflib)
- ("json-c" ,json-c)
- ("libgeotiff" ,libgeotiff)
- ("libjpeg-turbo" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libtiff" ,libtiff)
- ("libwebp" ,libwebp)
- ("pcre" ,pcre)
- ("zlib" ,zlib)))
- (home-page "http://www.gdal.org/")
- (synopsis "Raster and vector geospatial data format library")
- (description "GDAL is a translator library for raster and vector geospatial
- data formats. As a library, it presents a single raster abstract data model
- and single vector abstract data model to the calling application for all
- supported formats. It also comes with a variety of useful command line
- utilities for data translation and processing.")
- (license (list
- ;; general license
- license:expat
- ;; frmts/gtiff/tif_float.c, frmts/pcraster/libcsf,
- ;; ogr/ogrsf_frmts/dxf/intronurbs.cpp, frmts/pdf/pdfdataset.cpp
- ;; frmts/mrf/
- license:bsd-3
- ;; frmts/hdf4/hdf-eos/*
- ;; similar to the expat license, but without guarantee exclusion
- (license:non-copyleft "file://frmts/hdf4/hdf-eos/README")
- ;; frmts/grib/degrib/
- license:public-domain ; with guarantee exclusion
- ;; port/cpl_minizip*
- ;; Some bsd-inspired license
- (license:non-copyleft "file://port/LICENCE_minizip")
- ;; alg/internal_libqhull
- ;; Some 5-clause license
- (license:non-copyleft "file://alg/internal_libqhull/COPYING.txt")
- ;; frmts/mrf/libLERC
- license:asl2.0))))
- (define-public postgis
- (package
- (name "postgis")
- (version "2.4.4")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://download.osgeo.org/postgis/source/postgis-"
- version ".tar.gz"))
- (sha256
- (base32
- "1hm8migjb53cymp4qvg1h20yqllmy9f7x0awv5450391i6syyqq6"))))
- (build-system gnu-build-system)
- (arguments
- `(#:tests? #f
- #:make-flags
- (list (string-append "datadir=" (assoc-ref %outputs "out") "/share")
- (string-append "docdir="(assoc-ref %outputs "out") "/share/doc")
- (string-append "pkglibdir="(assoc-ref %outputs "out") "/lib")
- (string-append "bindir=" (assoc-ref %outputs "out") "/bin"))
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'fix-install-path
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* '("raster/loader/Makefile" "raster/scripts/python/Makefile")
- (("\\$\\(DESTDIR\\)\\$\\(PGSQL_BINDIR\\)")
- (string-append (assoc-ref outputs "out") "/bin"))))))))
- (inputs
- `(("gdal" ,gdal)
- ("geos" ,geos)
- ("libxml2" ,libxml2)
- ("pcre" ,pcre)
- ("postgresql" ,postgresql)
- ("proj.4" ,proj.4)))
- (native-inputs
- `(("perl" ,perl)
- ("pkg-config" ,pkg-config)))
- (home-page "https://postgis.net")
- (synopsis "Spatial database extender for PostgreSQL")
- (description "PostGIS is a spatial database extender for PostgreSQL
- object-relational database. It adds support for geographic objects allowing
- location queries to be run in SQL. This package provides a PostgreSQL
- extension.")
- (license (list
- ;; General license
- license:gpl2+
- ;; loader/dbfopen, safileio.*, shapefil.h, shpopen.c
- license:expat
- ;; loader/getopt.*
- license:public-domain
- ;; doc/xsl
- license:bsd-3 ; files only say "BSD"
- ;; doc
- license:cc-by-sa3.0))))
- (define-public tegola
- (package
- (name "tegola")
- (version "0.7.0")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/go-spatial/tegola/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "09vnzxfn0r70kmd776kcdfqxhzdj11syxa0b27z4ci1k367v7viw"))))
- (build-system go-build-system)
- (arguments
- `(#:import-path "github.com/go-spatial/tegola/cmd/tegola"
- #:unpack-path "github.com/go-spatial"
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'set-version
- (lambda _
- (with-directory-excursion
- (string-append "src/github.com/go-spatial/tegola-" ,version)
- (substitute* '("cmd/tegola/cmd/root.go"
- "cmd/tegola_lambda/main.go")
- (("version not set") ,version)))
- #t))
- (add-before 'build 'rename-import
- (lambda _
- (rename-file (string-append "src/github.com/go-spatial/tegola-" ,version)
- "src/github.com/go-spatial/tegola")
- #t)))))
- (home-page "http://tegola.io")
- (synopsis "Vector tile server for maps")
- (description "Tegola is a free vector tile server written in Go. Tegola
- takes geospatial data and slices it into vector tiles that can be efficiently
- delivered to any client.")
- (license (list
- license:expat
- ;; Some packages in vendor have other licenses
- license:asl2.0
- license:bsd-2
- license:bsd-3
- license:wtfpl2))))
- (define-public imposm3
- (package
- (name "imposm3")
- (version "0.6.0-alpha.4")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/omniscale/imposm3/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "06f0kwmv52yd5m9jlckqxqmkf0cnqy3hamakrvg9lspplyqrds80"))))
- (build-system go-build-system)
- (arguments
- `(#:import-path "github.com/omniscale/imposm3/cmd/imposm"
- #:unpack-path "github.com/omniscale"
- #:phases
- (modify-phases %standard-phases
- (add-before 'build 'rename-import
- (lambda _
- (rename-file (string-append "src/github.com/omniscale/imposm3-" ,version)
- "src/github.com/omniscale/imposm3")
- #t))
- (add-before 'build 'set-version
- (lambda _
- (substitute* "src/github.com/omniscale/imposm3/version.go"
- (("0.0.0-dev") ,version))
- #t)))))
- (inputs
- `(("geos" ,geos)
- ("leveldb" ,leveldb)))
- (home-page "https://imposm.org/")
- (synopsis "OpenStreetMap importer for PostGIS")
- (description "Imposm is an importer for OpenStreetMap data. It reads PBF
- files and imports the data into PostgreSQL/PostGIS databases. It is designed
- to create databases that are optimized for rendering/tile/map-services.")
- (license (list
- license:asl2.0
- ;; Some dependencies in vendor have different licenses
- license:expat
- license:bsd-2
- license:bsd-3))))
- (define-public protozero
- (package
- (name "protozero")
- (version "1.6.5")
- (source
- (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/mapbox/protozero.git")
- (commit (string-append "v" version))))
- (file-name (git-file-name name version))
- (sha256
- (base32 "10ldzni46cplmkgx1f73yn95qcb71xh9nxpcfdmi107y3kvicv3c"))))
- (build-system cmake-build-system)
- (home-page "https://github.com/mapbox/protozero")
- (synopsis "Minimalistic protocol buffer decoder and encoder in C++")
- (description "Protozero is a minimalistic protocol buffer decoder and
- encoder in C++. The developer using protozero has to manually translate the
- @file{.proto} description into code.")
- (license (list
- license:asl2.0 ; for folly
- license:bsd-2))))
- (define-public libosmium
- (package
- (name "libosmium")
- (version "2.14.2")
- (source
- (origin
- (method url-fetch)
- (uri (string-append "https://github.com/osmcode/libosmium/archive/v"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "0d9b46qiw7zkw1h9lygjdwqxnbhm3c7v8kydzw9f9f778cyagc94"))))
- (build-system cmake-build-system)
- (propagated-inputs
- `(("boost" ,boost)
- ("expat" ,expat)
- ("gdal" ,gdal)
- ("geos" ,geos)
- ("proj.4" ,proj.4)
- ("protozero" ,protozero)
- ("sparsehash" ,sparsehash)
- ("zlib" ,zlib)))
- (native-inputs
- `(("doxygen" ,doxygen)))
- (home-page "https://osmcode.org/libosmium/")
- (synopsis "C++ library for working with OpenStreetMap data")
- (description "Libosmium is a fast and flexible C++ library for working with
- OpenStreetMap data.")
- (license license:boost1.0)))
- (define-public osm2pgsql
- (package
- (name "osm2pgsql")
- (version "0.96.0")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/openstreetmap/osm2pgsql/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "08y7776r4l9v9177a4q6cfdri0lpirky96m6g699hwl7v1vhw0mn"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- (delete-file-recursively "contrib/protozero")
- (delete-file-recursively "contrib/libosmium")
- #t))))
- (build-system cmake-build-system)
- (arguments
- `(#:tests? #f; tests fail because we need to setup a database
- #:configure-flags
- (list (string-append "-DOSMIUM_INCLUDE_DIR="
- (assoc-ref %build-inputs "libosmium")
- "/include")
- (string-append "-DPROTOZERO_INCLUDE_DIR="
- (assoc-ref %build-inputs "protozero")
- "/include"))))
- (inputs
- `(("boost" ,boost)
- ("expat" ,expat)
- ("libosmium" ,libosmium)
- ("lua" ,lua)
- ("postgresql" ,postgresql)
- ("proj.4" ,proj.4)
- ("protozero" ,protozero)
- ("zlib" ,zlib)))
- (native-inputs
- `(("python-2" ,python-2)
- ("python2-psycopg2" ,python2-psycopg2)))
- (home-page "https://github.com/openstreetmap/osm2pgsql")
- (synopsis "OSM data importer to postgresql")
- (description "Osm2pgsql is a tool for loading OpenStreetMap data into a
- PostgreSQL / PostGIS database suitable for applications like rendering into a
- map, geocoding with Nominatim, or general analysis.")
- (license license:gpl2+)))
- (define-public tippecanoe
- (package
- (name "tippecanoe")
- (version "1.31.5")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/mapbox/tippecanoe/archive/"
- version ".tar.gz"))
- (file-name (string-append name "-" version ".tar.gz"))
- (sha256
- (base32
- "1057na1dkgjaryr7jr15lqkxpam111d3l5zdpdkqzzzpxmdjxqcf"))))
- (build-system gnu-build-system)
- (arguments
- `(#:phases
- (modify-phases %standard-phases (delete 'configure))
- #:test-target "test"
- #:make-flags
- (list "CC=gcc"
- (string-append "PREFIX=" (assoc-ref %outputs "out")))))
- (inputs
- `(("perl" ,perl)
- ("sqlite" ,sqlite)
- ("zlib" ,zlib)))
- (home-page "https://github.com/mapbox/tippecanoe")
- (synopsis "Vector tile server for maps")
- (description "Tippecanoe creates scale-independent view of data, so that
- the texture and density of features is visible at every zoom level, instead of
- dropping features at lower levels.")
- (license license:bsd-2)))
|