gnu: Order (gnu packages license)'s imports alphabetically.
[jackhill/guix/guix.git] / gnu / packages / geo.scm
CommitLineData
03c1662e
LF
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
ad1ff78d 3;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
f6c507e1 4;;; Copyright © 2017, 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
257c826c 5;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
8d26f48e 6;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
f2b005f6 7;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
3d60f426 8;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
996e45cb 9;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
ed72a133 10;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
0f7b8a7f 11;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
03c1662e
LF
12;;;
13;;; This file is part of GNU Guix.
14;;;
15;;; GNU Guix is free software; you can redistribute it and/or modify it
16;;; under the terms of the GNU General Public License as published by
17;;; the Free Software Foundation; either version 3 of the License, or (at
18;;; your option) any later version.
19;;;
20;;; GNU Guix is distributed in the hope that it will be useful, but
21;;; WITHOUT ANY WARRANTY; without even the implied warranty of
22;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23;;; GNU General Public License for more details.
24;;;
25;;; You should have received a copy of the GNU General Public License
26;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
27
28(define-module (gnu packages geo)
8fa3451c 29 #:use-module (guix build-system cmake)
03c1662e 30 #:use-module (guix build-system glib-or-gtk)
065d0125 31 #:use-module (guix build-system gnu)
be7c64ba 32 #:use-module (guix build-system go)
f25e1e24 33 #:use-module (guix build-system python)
f2b005f6 34 #:use-module (guix build-system scons)
3d60f426 35 #:use-module (guix build-system r)
03c1662e 36 #:use-module (guix download)
d56af1ff 37 #:use-module (guix git-download)
065d0125 38 #:use-module ((guix licenses) #:prefix license:)
03c1662e
LF
39 #:use-module (guix packages)
40 #:use-module (guix utils)
0f7b8a7f 41 #:use-module (gnu packages astronomy)
ed72a133 42 #:use-module (gnu packages autotools)
f2b005f6 43 #:use-module (gnu packages boost)
f25e1e24 44 #:use-module (gnu packages check)
1a39141d 45 #:use-module (gnu packages compression)
f2b005f6 46 #:use-module (gnu packages databases)
889e94e3
JL
47 #:use-module (gnu packages datastructures)
48 #:use-module (gnu packages documentation)
0f7b8a7f 49 #:use-module (gnu packages fonts)
f2b005f6 50 #:use-module (gnu packages fontutils)
03c1662e
LF
51 #:use-module (gnu packages glib)
52 #:use-module (gnu packages gnome)
53 #:use-module (gnu packages gtk)
1a39141d 54 #:use-module (gnu packages image)
f2b005f6 55 #:use-module (gnu packages icu4c)
b0e2299a 56 #:use-module (gnu packages lua)
996e45cb 57 #:use-module (gnu packages pcre)
2b9be1a6 58 #:use-module (gnu packages perl)
03c1662e 59 #:use-module (gnu packages pkg-config)
dc8621a2 60 #:use-module (gnu packages protobuf)
f2b005f6 61 #:use-module (gnu packages python)
44d10b1f 62 #:use-module (gnu packages python-xyz)
0f7b8a7f 63 #:use-module (gnu packages qt)
cd0322a3 64 #:use-module (gnu packages sqlite)
5b19776e 65 #:use-module (gnu packages web)
03c1662e 66 #:use-module (gnu packages webkit)
a2a53274 67 #:use-module (gnu packages wxwidgets)
03c1662e
LF
68 #:use-module (gnu packages xml))
69
a7607572
BH
70(define-public geos
71 (package
72 (name "geos")
e3df159e 73 (version "3.7.1")
a7607572
BH
74 (source (origin
75 (method url-fetch)
76 (uri (string-append "http://download.osgeo.org/geos/geos-"
77 version
78 ".tar.bz2"))
79 (sha256
80 (base32
e3df159e 81 "1312m02xk4sp6f1xdpb9w0ic0zbxg90p5y66qnwidl5fksscf1h0"))))
a7607572
BH
82 (build-system gnu-build-system)
83 (arguments `(#:phases
84 (modify-phases %standard-phases
85 (add-after
86 'unpack 'patch-test-shebangs
87 (lambda _
88 (substitute* '("tests/xmltester/testrunner.sh"
89 "tests/geostest/testrunner.sh")
90 (("/bin/sh") (which "sh")))
91 #t)))))
92 (inputs
93 `(("glib" ,glib)))
94 (home-page "https://geos.osgeo.org/")
95 (synopsis "Geometry Engine for Geographic Information Systems")
96 (description
97 "GEOS provides a spatial object model and fundamental geometric
98functions. It is a C++ port of the Java Topology Suite (JTS). As such,
99it aims to contain the complete functionality of JTS in C++. This
100includes all the OpenGIS Simple Features for SQL spatial predicate
101functions and spatial operators, as well as specific JTS enhanced
102topology functions.")
103 (license (list license:lgpl2.1+ ; Main distribution.
104 license:zlib ; tests/xmltester/tinyxml/*
105 license:public-domain)))) ; include/geos/timeval.h
106
03c1662e
LF
107(define-public gnome-maps
108 (package
109 (name "gnome-maps")
78ac232e 110 (version "3.28.2")
03c1662e
LF
111 (source (origin
112 (method url-fetch)
113 (uri (string-append "mirror://gnome/sources/" name "/"
114 (version-major+minor version) "/"
115 name "-" version ".tar.xz"))
116 (sha256
117 (base32
78ac232e 118 "1yzi08a9316jplgsl2z0qzlqxhghyqcjhv0m6i94wcain4mxk1z7"))))
03c1662e
LF
119 (build-system glib-or-gtk-build-system)
120 (arguments
67bd376b 121 `(#:configure-flags ;; Ensure that geoclue is referred to by output.
03c1662e
LF
122 (list (string-append "LDFLAGS=-L"
123 (assoc-ref %build-inputs "geoclue") "/lib")
124 (string-append "CFLAGS=-I"
125 (assoc-ref %build-inputs "geoclue") "/include"))
126 #:phases
127 (modify-phases %standard-phases
67bd376b
KK
128 (add-after 'install 'wrap
129 (lambda* (#:key inputs outputs #:allow-other-keys)
130 (let ((out (assoc-ref outputs "out"))
131 (gi-typelib-path (getenv "GI_TYPELIB_PATH"))
132 (goa-path (string-append
03c1662e 133 (assoc-ref inputs "gnome-online-accounts")
9fa7c20b
RW
134 "/lib:"
135 (assoc-ref inputs "gnome-online-accounts:lib")
67bd376b 136 "/lib"))
9fa7c20b
RW
137 (geocode-glib-path (string-append
138 (assoc-ref inputs "geocode-glib")
139 "/lib"))
67bd376b
KK
140 (webkitgtk-path (string-append
141 (assoc-ref inputs "webkitgtk")
142 "/lib")))
143 (wrap-program (string-append out "/bin/gnome-maps")
144 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))
03c1662e 145
67bd376b
KK
146 ;; There seems to be no way to embed the path of
147 ;; libgoa-1.0.so.0, libwebkit2gtk-4.0.so.37 and
148 ;; libjavascriptcoregtk-4.0.so.18.
9fa7c20b
RW
149 `("LD_LIBRARY_PATH" ":" prefix
150 (,goa-path ,webkitgtk-path ,geocode-glib-path)))
67bd376b 151 #t))))))
03c1662e
LF
152 (native-inputs
153 `(("gobject-introspection" ,gobject-introspection)
154 ("intltool" ,intltool)
155 ("pkg-config" ,pkg-config)))
156 (inputs
157 `(("folks" ,folks)
158 ("libchamplain" ,libchamplain)
159 ("libgee" ,libgee)
8d26f48e
RW
160 ("libsecret" ,libsecret)
161 ("libsoup" ,libsoup)
162 ("libgweather" ,libgweather)
03c1662e 163 ("libxml2" ,libxml2)
8d26f48e
RW
164 ("gdk-pixbuf" ,gdk-pixbuf)
165 ("glib-networking" ,glib-networking)
03c1662e
LF
166 ("geoclue" ,geoclue)
167 ("geocode-glib" ,geocode-glib)
168 ("gfbgraph" ,gfbgraph)
169 ("gjs" ,gjs)
170 ("glib" ,glib)
171 ("gnome-online-accounts" ,gnome-online-accounts)
9fa7c20b 172 ("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
8d26f48e 173 ("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
03c1662e
LF
174 ("rest" ,rest)
175 ("webkitgtk" ,webkitgtk)))
176 (propagated-inputs
177 `(("gtk+3" ,gtk+)))
178 (synopsis "Graphical map viewer and wayfinding program")
179 (description "GNOME Maps is a graphical map viewer. It uses map data from
180the OpenStreetMap project. It can provide directions for walking, bicycling,
181and driving.")
182 (home-page "https://wiki.gnome.org/Apps/Maps")
065d0125
BH
183 (license license:gpl2+)))
184
22c7c775
BH
185(define-public libgaiagraphics
186 (package
187 (name "libgaiagraphics")
188 (version "0.5")
189 (source
190 (origin
191 (method url-fetch)
192 (uri (string-append "https://www.gaia-gis.it/gaia-sins/libgaiagraphics-"
193 version ".tar.gz"))
194 (sha256
195 (base32
196 "076afqv417ag3hfvnif0qc7qscmnq1dsf6y431yygwgf34rjkayc"))))
197 (build-system gnu-build-system)
198 (native-inputs
199 `(("pkg-config" ,pkg-config)))
200 (inputs
201 `(("cairo" ,cairo)
202 ("libpng" ,libpng)
56e53392 203 ("libjpeg-turbo" ,libjpeg-turbo)
22c7c775
BH
204 ("libtiff" ,libtiff)
205 ("libgeotiff" ,libgeotiff)
206 ("proj.4" ,proj.4)
207 ("libxml2" ,libxml2)
208 ("zlib" ,zlib)))
209 (synopsis "Gaia common graphics support")
210 (description "libgaiagraphics is a library supporting
211 common-utility raster handling methods.")
212 (home-page "https://www.gaia-gis.it/fossil/libgaiagraphics/index")
213 (license license:lgpl3+)))
214
1a39141d
BH
215(define-public libgeotiff
216 (package
217 (name "libgeotiff")
a3783aca 218 (version "1.4.3")
1a39141d
BH
219 (source
220 (origin
221 (method url-fetch)
222 (uri (string-append "http://download.osgeo.org/geotiff/libgeotiff/libgeotiff-"
223 version ".tar.gz"))
224 (sha256
a3783aca 225 (base32 "0rbjqixi4c8yz19larlzq6jda0px2gpmpp9c52cyhplbjsdhsldq"))
1a39141d
BH
226 (modules '((guix build utils)))
227 (snippet
228 '(begin
229 ;; Remove .csv files, distributed from EPSG under a restricted
230 ;; license. See LICENSE for full license text.
231 (for-each delete-file (find-files "." "\\.csv$"))
232 ;; Now that we have removed the csv files, we need to modify the Makefile.
233 (substitute* "Makefile.in"
234 (("^all-am: .*$")
235 "all-am: Makefile $(LTLIBRARIES) $(HEADERS) geo_config.h\n")
236 (("^install-data-am: .*$")
6cbee49d
MW
237 "install-data-am: install-includeHEADERS"))
238 #t))))
1a39141d
BH
239 (build-system gnu-build-system)
240 (inputs
241 `(("libjpeg-turbo" ,libjpeg-turbo)
242 ("libtiff" ,libtiff)
243 ("proj.4" ,proj.4)
244 ("zlib" ,zlib)))
245 (arguments
246 `(#:configure-flags
247 (list (string-append "--with-zlib")
248 (string-append "--with-jpeg")
249 (string-append "--with-libtiff=" (assoc-ref %build-inputs "libtiff")))))
250 (synopsis "Library for handling GeoTIFF (geographic enabled TIFF)")
251 (description "libgeotiff is a library on top of libtiff for reading and
252writing GeoTIFF information tags.")
253 (home-page "https://trac.osgeo.org/geotiff/")
254 ;; This is a mixture of various contributions under different licenses.
255 ;; Note that the EPSG database is NOT "free to use" as the LICENSE file
256 ;; states, as its commercial redistribution is restricted. Hence, we have
257 ;; removed it from the package.
258 (license (list license:public-domain
259 license:x11
260 license:bsd-3
261 (license:non-copyleft "file://LICENSE"
262 "See LICENSE in the distribution.")))))
263
f6c507e1
BH
264(define-public libspatialite
265 (package
266 (name "libspatialite")
267 (version "4.3.0a")
268 (source
269 (origin
270 (method url-fetch)
271 (uri (string-append "https://www.gaia-gis.it/gaia-sins/libspatialite-"
272 version ".tar.gz"))
273 (sha256
274 (base32
275 "16d4lpl7xrm9zy4gphy6nwanpjp8wn9g4wq2i2kh8abnlhq01448"))))
276 (build-system gnu-build-system)
277 (native-inputs
278 `(("pkg-config" ,pkg-config)))
279 (inputs
280 `(("freexl" ,freexl)
281 ("geos" ,geos)
282 ("libxml2" ,libxml2)
283 ("proj.4" ,proj.4)
284 ("sqlite" ,sqlite)
285 ("zlib" ,zlib)))
286 (arguments
287 `(#:phases
288 (modify-phases %standard-phases
289 ;; 3 tests are failing, ignore them:
290 (add-after 'unpack 'ignore-broken-tests
291 (lambda _
292 (substitute* '("test/Makefile.in")
293 (("\tcheck_sql_stm.*" all) "\tcheck_multithread$(EXEEXT) \\\n")
294 (("(\tch.*) check_v.*ble2.*$" all vt1) (string-append vt1 " \\\n"))
295 (("\tch.* (check_v.*ble4.*)$" all vt4) (string-append "\t" vt4)))
296 #t)))))
297 (synopsis "Extend SQLite to support Spatial SQL capabilities")
298 (description
299 "SpatiaLite is a library intended to extend the SQLite core to support
300fully fledged Spatial SQL capabilities.")
301 (home-page "https://www.gaia-gis.it/fossil/libspatialite/index")
302 ;; For the genuine libspatialite-sources holds:
303 ;; Any of the licenses MPL1.1, GPL2+ or LGPL2.1+ may be picked.
304 ;; Files under src/control_points are from GRASS
305 ;; and are licensed under GPL2+ only.
306 ;; src/md5.[ch]: Placed into the public domain by Alexander Peslyak.
307 (license (list license:gpl2+
308 license:lgpl2.1+
309 license:mpl1.1
310 license:public-domain))))
311
065d0125
BH
312(define-public proj.4
313 (package
314 (name "proj.4")
315 (version "4.9.3")
316 (source (origin
317 (method url-fetch)
318 (uri (string-append "http://download.osgeo.org/proj/proj-"
319 version ".tar.gz"))
320 (sha256
321 (base32
322 "1xw5f427xk9p2nbsj04j6m5zyjlyd66sbvl2bkg8hd1kx8pm9139"))))
323 (build-system gnu-build-system)
324 (arguments
325 `(#:phases
326 (modify-phases %standard-phases
327 (add-after 'unpack 'patch-test-paths
328 (lambda _
329 (substitute* '("nad/test27"
330 "nad/test83"
331 "nad/testvarious"
332 "nad/testdatumfile"
333 "nad/testflaky"
334 "nad/testIGNF")
335 (("/bin/rm") (which "rm")))
336 #t))
337 ;; Precision problems on i686 and other platforms. See:
338 ;; https://web.archive.org/web/20151006134301/http://trac.osgeo.org/proj/ticket/255
339 ;; Disable failing test.
340 (add-after 'patch-test-paths 'ignore-failing-tests
341 (lambda _
342 (substitute* '("nad/Makefile.in")
343 (("\tPROJ_LIB.*" all) (string-append "#" all)))
344 #t)))))
345 (inputs
346 `(("glib" ,glib)))
347 (home-page "http://proj4.org/")
348 (synopsis "Cartographic Projections Library")
349 (description
350 "Proj.4 is a library for converting coordinates between cartographic
351projections.")
352 (license (list license:expat
353 ;; src/PJ_patterson.c
354 license:asl2.0
355 ;; src/geodesic.c/h
356 license:x11
357 ;; Embedded EPSG database.
358 (license:non-copyleft "http://www.epsg.org/TermsOfUse")
359 ;; cmake/*
360 license:boost1.0))))
f2b005f6
AI
361
362(define-public mapnik
363 (package
364 (name "mapnik")
365 (version "3.0.18")
366 (source
367 (origin
368 (method url-fetch)
369 (uri (string-append "https://github.com/mapnik/mapnik/releases/download/v"
370 version "/mapnik-v" version ".tar.bz2"))
371 (sha256
372 (base32
373 "06frcikaj2mgz3abfk5h0z4j3hbksi0zikwjngbjv4p5f3pwxf8q"))))
374 (build-system scons-build-system)
375 (inputs
376 `(("boost" ,boost)
377 ("cairo" ,cairo)
378 ("freetype" ,freetype)
379 ("harfbuzz" ,harfbuzz)
380 ("icu4c" ,icu4c)
381 ("libjpeg-turbo" ,libjpeg-turbo)
382 ("libpng" ,libpng)
383 ("libtiff" ,libtiff)
384 ("libwebp" ,libwebp)
385 ("libxml2" ,libxml2)
386 ("proj.4" ,proj.4)
387 ("sqlite" ,sqlite)
388 ("zlib" ,zlib)))
389 (native-inputs
390 `(("pkg-config" ,pkg-config)))
391 (arguments
392 `(#:scons ,scons-python2
393 #:scons-flags
394 (list "CC=gcc"
395 (string-append "PREFIX=" %output)
396 (string-append "CUSTOM_LDFLAGS=-Wl,-rpath=" %output "/lib"))))
397 (home-page "http://mapnik.org/")
398 (synopsis "Toolkit for developing mapping applications")
399 (description "Mapnik is a toolkit for developing mapping applications. It
400is basically a collection of geographic objects like maps, layers,
401datasources, features, and geometries. At its core is a C++ shared library
402providing algorithms and patterns for spatial data access and visualization.
403The library does not rely on any specific windowing system and can be deployed
404to any server environment. It is intended to play fair in a multi-threaded
405environment and is aimed primarily, but not exclusively, at web-based
406development.")
407 (license (list license:lgpl2.1+
408 ;; demo/viewer, demo/python/rundemo.py
409 license:gpl2+
410 ;; deps/boost, deps/mapbox, deps/agg/include/agg_conv_offset.h
411 license:boost1.0
412 ;; deps/mapnik/sparsehash
413 license:bsd-3
414 ;; deps/agg
415 (license:non-copyleft "file://deps/agg/copying")))))
416
f25e1e24
AI
417(define-public python2-mapnik
418 (package
419 (name "python2-mapnik")
420 (version "3.0.16")
421 (source
422 (origin
423 (method url-fetch)
424 (uri (string-append "https://github.com/mapnik/python-mapnik/archive/v"
425 version ".tar.gz"))
426 (file-name (string-append name "-" version ".tar.gz"))
427 (sha256
428 (base32
429 "0w7wg72gnwmbjani9sqk42p2jwqkrl9hsdkawahni5m05xsifcb4"))))
430 (build-system python-build-system)
431 (inputs
432 `(("boost" ,boost)
433 ("harfbuzz" ,harfbuzz)
434 ("icu4c" ,icu4c)
435 ("libjpeg-turbo" ,libjpeg-turbo)
436 ("libpng" ,libpng)
437 ("libtiff" ,libtiff)
438 ("libwebp" ,libwebp)
439 ("mapnik" ,mapnik)
440 ("proj.4" ,proj.4)
441 ("python2-pycairo" ,python2-pycairo)))
442 (native-inputs
443 (let ((test-data-input
444 (lambda (repository version hash)
445 (origin
446 (method url-fetch)
447 (uri (string-append "https://github.com/mapnik/" repository
448 "/archive/v" version ".tar.gz"))
449 (file-name (string-append "python-mapnik-" repository
450 "-" version ".tar.gz"))
451 (sha256 (base32 hash))))))
452 `(("python2-nose" ,python2-nose)
453 ;; Test data is released as separate tarballs
454 ("test-data"
455 ,(test-data-input "test-data" "3.0.18"
456 "10cvgn5gxn8ldrszj24zr1vzm5w76kqk4s7bl2zzp5yvkhh8lj1n"))
457 ("test-data-visual"
458 ,(test-data-input "test-data-visual" "3.0.18"
459 "1cb9ghy8sis0w5fkp0dvwxdqqx44rhs9a9w8g9r9i7md1c40r80i")))))
460 (arguments
461 `(#:python ,python-2 ; Python 3 support is incomplete, and the build fails
462 #:phases
463 (modify-phases %standard-phases
464 ;; Unpack test data into the source tree
465 (add-after 'unpack 'unpack-submodules
466 (lambda* (#:key inputs #:allow-other-keys)
467 (let ((unpack (lambda (source target)
468 (with-directory-excursion target
469 (invoke "tar" "xvf" (assoc-ref inputs source)
470 "--strip-components=1")))))
471 (unpack "test-data" "test/data")
472 (unpack "test-data-visual" "test/data-visual"))))
473 ;; Skip failing tests
474 (add-after 'unpack 'skip-tests
475 (lambda _
476 (let ((skipped-tests (list "test_vrt_referring_to_missing_files"
477 "test_unicode_regex_replace"
478 "test_proj_antimeridian_bbox"
479 "test_render_with_scale_factor")))
480 (substitute* "setup.cfg"
481 (("\\[nosetests\\]" all)
482 (string-append all "\nexclude=^("
483 (string-join skipped-tests "|") ")$")))))))))
484 (home-page "https://github.com/mapnik/python-mapnik")
485 (synopsis "Python bindings for Mapnik")
486 (description "This package provides Python bindings for Mapnik.")
487 (license license:lgpl2.1+)))
a2a53274
BH
488
489(define-public spatialite-gui
490 (package
491 (name "spatialite-gui")
492 (version "1.7.1")
493 (source
494 (origin
495 (method url-fetch)
496 (uri (string-append "https://www.gaia-gis.it/gaia-sins/spatialite_gui-"
497 version ".tar.gz"))
498 (sha256
499 (base32
500 "1r05dz9pyc8vsd2wbqxcsracpfbaamz470rcyp2myfpqwznv376b"))))
501 (build-system gnu-build-system)
502 (native-inputs
503 `(("pkg-config" ,pkg-config)))
504 (inputs
505 `(("freexl" ,freexl)
506 ("geos" ,geos)
507 ("libgaiagraphics" ,libgaiagraphics)
508 ("libspatialite" ,libspatialite)
509 ("libxml2" ,libxml2)
510 ("proj.4" ,proj.4)
511 ("sqlite" ,sqlite)
512 ("wxwidgets" ,wxwidgets-2)
513 ("zlib" ,zlib)))
514 (synopsis "Graphical user interface for SpatiaLite")
515 (description "Spatialite-gui provides a visual interface for viewing and
516 maintaining a spatialite database. You can easily see the structure of the
517 tables and data contents using point and click functions, many of which
518 construct common SQL queries, or craft your own SQL queries.")
519 (home-page "https://www.gaia-gis.it/fossil/spatialite_gui/index")
520 (license license:gpl3+)))
3d60f426 521
996e45cb
JL
522(define-public gdal
523 (package
524 (name "gdal")
525 (version "2.2.4")
526 (source (origin
527 (method url-fetch)
528 (uri (string-append
529 "http://download.osgeo.org/gdal/" version "/gdal-"
530 version ".tar.gz"))
531 (sha256
532 (base32
533 "1951f7b69x3d1vic0rmq92q8f4bj3hbxnxmj5jl0cc3zg0isgmdr"))
534 (modules '((guix build utils)))
535 (snippet
536 `(begin
537 ;; TODO: frmts contains a lot more bundled code.
538 (for-each delete-file-recursively
539 ;; bundled code
540 '("frmts/png/libpng"
541 "frmts/gif/giflib"
542 "frmts/jpeg/libjpeg"
543 "frmts/jpeg/libjpeg12"
544 "frmts/gtiff/libtiff"
545 "frmts/gtiff/libgeotiff"
546 "frmts/zlib"
547 "ogr/ogrsf_frmts/geojson/libjson"))))))
548 (build-system gnu-build-system)
549 (arguments
550 `(#:tests? #f
551 #:configure-flags
552 (let-syntax ((with (syntax-rules ()
553 ((_ option input)
554 (string-append option "="
555 (assoc-ref %build-inputs input))))))
556 (list
557 ;; TODO: --with-pcidsk, --with-pcraster
558 (with "--with-freexl" "freexl")
559 (with "--with-libjson-c" "json-c")
560 (with "--with-png" "libpng")
561 (with "--with-webp" "libwebp")
562 (with "--with-gif" "giflib")
109f022e 563 (with "--with-jpeg" "libjpeg-turbo")
996e45cb
JL
564 (with "--with-libtiff" "libtiff")
565 (with "--with-geotiff" "libgeotiff")
566 (with "--with-libz" "zlib")
567 "--with-pcre"))
568 #:phases
569 (modify-phases %standard-phases
570 (add-before 'build 'fix-path
571 (lambda _
572 (substitute* "frmts/mrf/mrf_band.cpp"
573 (("\"../zlib/zlib.h\"") "<zlib.h>")))))))
574 (inputs
575 `(("freexl" ,freexl)
576 ("geos" ,geos)
577 ("giflib" ,giflib)
578 ("json-c" ,json-c)
579 ("libgeotiff" ,libgeotiff)
580 ("libjpeg-turbo" ,libjpeg-turbo)
581 ("libpng" ,libpng)
582 ("libtiff" ,libtiff)
583 ("libwebp" ,libwebp)
584 ("pcre" ,pcre)
585 ("zlib" ,zlib)))
586 (home-page "http://www.gdal.org/")
587 (synopsis "Raster and vector geospatial data format library")
588 (description "GDAL is a translator library for raster and vector geospatial
589data formats. As a library, it presents a single raster abstract data model
590and single vector abstract data model to the calling application for all
591supported formats. It also comes with a variety of useful command line
592utilities for data translation and processing.")
593 (license (list
594 ;; general license
595 license:expat
596 ;; frmts/gtiff/tif_float.c, frmts/pcraster/libcsf,
597 ;; ogr/ogrsf_frmts/dxf/intronurbs.cpp, frmts/pdf/pdfdataset.cpp
598 ;; frmts/mrf/
599 license:bsd-3
600 ;; frmts/hdf4/hdf-eos/*
601 ;; similar to the expat license, but without guarantee exclusion
602 (license:non-copyleft "file://frmts/hdf4/hdf-eos/README")
603 ;; frmts/grib/degrib/
604 license:public-domain ; with guarantee exclusion
605 ;; port/cpl_minizip*
606 ;; Some bsd-inspired license
607 (license:non-copyleft "file://port/LICENCE_minizip")
608 ;; alg/internal_libqhull
609 ;; Some 5-clause license
610 (license:non-copyleft "file://alg/internal_libqhull/COPYING.txt")
611 ;; frmts/mrf/libLERC
612 license:asl2.0))))
2b9be1a6 613
a18a27be
SB
614(define-public python-gdal
615 (package (inherit gdal)
616 (name "python-gdal")
617 (build-system python-build-system)
618 (arguments
619 '(#:tests? #f ; no tests
620 #:phases
621 (modify-phases %standard-phases
622 (add-before 'build 'chdir
623 (lambda _
624 (chdir "swig/python")
625 #t)))))
626 (native-inputs '())
627 (propagated-inputs
628 `(("python-numpy" ,python-numpy)))
629 (inputs
630 `(("gdal" ,gdal)))
631 (synopsis "GDAL (Geospatial Data Abstraction Library) python bindings")))
632
2b9be1a6
JL
633(define-public postgis
634 (package
635 (name "postgis")
636 (version "2.4.4")
637 (source (origin
638 (method url-fetch)
639 (uri (string-append "https://download.osgeo.org/postgis/source/postgis-"
640 version ".tar.gz"))
641 (sha256
642 (base32
643 "1hm8migjb53cymp4qvg1h20yqllmy9f7x0awv5450391i6syyqq6"))))
644 (build-system gnu-build-system)
645 (arguments
646 `(#:tests? #f
647 #:make-flags
648 (list (string-append "datadir=" (assoc-ref %outputs "out") "/share")
649 (string-append "docdir="(assoc-ref %outputs "out") "/share/doc")
650 (string-append "pkglibdir="(assoc-ref %outputs "out") "/lib")
651 (string-append "bindir=" (assoc-ref %outputs "out") "/bin"))
652 #:phases
653 (modify-phases %standard-phases
654 (add-before 'build 'fix-install-path
655 (lambda* (#:key outputs #:allow-other-keys)
656 (substitute* '("raster/loader/Makefile" "raster/scripts/python/Makefile")
657 (("\\$\\(DESTDIR\\)\\$\\(PGSQL_BINDIR\\)")
658 (string-append (assoc-ref outputs "out") "/bin"))))))))
659 (inputs
660 `(("gdal" ,gdal)
661 ("geos" ,geos)
662 ("libxml2" ,libxml2)
663 ("pcre" ,pcre)
664 ("postgresql" ,postgresql)
665 ("proj.4" ,proj.4)))
666 (native-inputs
667 `(("perl" ,perl)
668 ("pkg-config" ,pkg-config)))
669 (home-page "https://postgis.net")
670 (synopsis "Spatial database extender for PostgreSQL")
671 (description "PostGIS is a spatial database extender for PostgreSQL
672object-relational database. It adds support for geographic objects allowing
8e3f06c9
JL
673location queries to be run in SQL. This package provides a PostgreSQL
674extension.")
2b9be1a6
JL
675 (license (list
676 ;; General license
677 license:gpl2+
678 ;; loader/dbfopen, safileio.*, shapefil.h, shpopen.c
679 license:expat
680 ;; loader/getopt.*
681 license:public-domain
682 ;; doc/xsl
683 license:bsd-3 ; files only say "BSD"
684 ;; doc
685 license:cc-by-sa3.0))))
be7c64ba
JL
686
687(define-public tegola
688 (package
689 (name "tegola")
690 (version "0.7.0")
691 (source (origin
692 (method url-fetch)
693 (uri (string-append
694 "https://github.com/go-spatial/tegola/archive/v"
695 version ".tar.gz"))
696 (file-name (string-append name "-" version ".tar.gz"))
697 (sha256
698 (base32
699 "09vnzxfn0r70kmd776kcdfqxhzdj11syxa0b27z4ci1k367v7viw"))))
700 (build-system go-build-system)
701 (arguments
702 `(#:import-path "github.com/go-spatial/tegola/cmd/tegola"
d9ef50b3 703 #:unpack-path "github.com/go-spatial/tegola"
be7c64ba
JL
704 #:phases
705 (modify-phases %standard-phases
706 (add-before 'build 'set-version
707 (lambda _
d9ef50b3 708 (with-directory-excursion "src/github.com/go-spatial/tegola"
be7c64ba
JL
709 (substitute* '("cmd/tegola/cmd/root.go"
710 "cmd/tegola_lambda/main.go")
711 (("version not set") ,version)))
be7c64ba
JL
712 #t)))))
713 (home-page "http://tegola.io")
714 (synopsis "Vector tile server for maps")
715 (description "Tegola is a free vector tile server written in Go. Tegola
716takes geospatial data and slices it into vector tiles that can be efficiently
717delivered to any client.")
718 (license (list
719 license:expat
720 ;; Some packages in vendor have other licenses
721 license:asl2.0
722 license:bsd-2
723 license:bsd-3
724 license:wtfpl2))))
3bd7611e
JL
725
726(define-public imposm3
727 (package
728 (name "imposm3")
729 (version "0.6.0-alpha.4")
730 (source
731 (origin
732 (method url-fetch)
733 (uri (string-append "https://github.com/omniscale/imposm3/archive/v"
734 version ".tar.gz"))
735 (file-name (string-append name "-" version ".tar.gz"))
736 (sha256
737 (base32
738 "06f0kwmv52yd5m9jlckqxqmkf0cnqy3hamakrvg9lspplyqrds80"))))
739 (build-system go-build-system)
740 (arguments
741 `(#:import-path "github.com/omniscale/imposm3/cmd/imposm"
bdc0c20c 742 #:unpack-path "github.com/omniscale/imposm3"
3bd7611e
JL
743 #:phases
744 (modify-phases %standard-phases
3bd7611e
JL
745 (add-before 'build 'set-version
746 (lambda _
747 (substitute* "src/github.com/omniscale/imposm3/version.go"
748 (("0.0.0-dev") ,version))
749 #t)))))
750 (inputs
751 `(("geos" ,geos)
752 ("leveldb" ,leveldb)))
753 (home-page "https://imposm.org/")
754 (synopsis "OpenStreetMap importer for PostGIS")
755 (description "Imposm is an importer for OpenStreetMap data. It reads PBF
756files and imports the data into PostgreSQL/PostGIS databases. It is designed
757to create databases that are optimized for rendering/tile/map-services.")
758 (license (list
759 license:asl2.0
760 ;; Some dependencies in vendor have different licenses
761 license:expat
762 license:bsd-2
763 license:bsd-3))))
8fa3451c 764
889e94e3
JL
765(define-public libosmium
766 (package
767 (name "libosmium")
768 (version "2.14.2")
769 (source
f4daf250
TGR
770 (origin
771 (method git-fetch)
772 (uri (git-reference
773 (url "https://github.com/osmcode/libosmium.git")
774 (commit (string-append "v" version))))
775 (file-name (git-file-name name version))
776 (sha256
777 (base32 "123ri1l0a2b9fljgpwsl7z2w4i3kmgxz79d4ns9z4mwbp8sw0250"))))
889e94e3
JL
778 (build-system cmake-build-system)
779 (propagated-inputs
780 `(("boost" ,boost)
781 ("expat" ,expat)
782 ("gdal" ,gdal)
783 ("geos" ,geos)
784 ("proj.4" ,proj.4)
785 ("protozero" ,protozero)
786 ("sparsehash" ,sparsehash)
787 ("zlib" ,zlib)))
788 (native-inputs
789 `(("doxygen" ,doxygen)))
790 (home-page "https://osmcode.org/libosmium/")
791 (synopsis "C++ library for working with OpenStreetMap data")
792 (description "Libosmium is a fast and flexible C++ library for working with
793OpenStreetMap data.")
794 (license license:boost1.0)))
b0e2299a
JL
795
796(define-public osm2pgsql
797 (package
798 (name "osm2pgsql")
799 (version "0.96.0")
82b47fd9
TGR
800 (source
801 (origin
802 (method git-fetch)
803 (uri (git-reference
804 (url "https://github.com/openstreetmap/osm2pgsql.git")
805 (commit version)))
806 (file-name (git-file-name name version))
807 (sha256
808 (base32 "032cydh8ynaqfhdzmkvgbmqyjql668y6qln1l59l2s3ni9963bbl"))
809 (modules '((guix build utils)))
810 (snippet
811 '(begin
812 (delete-file-recursively "contrib/protozero")
813 (delete-file-recursively "contrib/libosmium")
814 #t))))
b0e2299a
JL
815 (build-system cmake-build-system)
816 (arguments
817 `(#:tests? #f; tests fail because we need to setup a database
818 #:configure-flags
819 (list (string-append "-DOSMIUM_INCLUDE_DIR="
820 (assoc-ref %build-inputs "libosmium")
821 "/include")
822 (string-append "-DPROTOZERO_INCLUDE_DIR="
823 (assoc-ref %build-inputs "protozero")
824 "/include"))))
825 (inputs
826 `(("boost" ,boost)
827 ("expat" ,expat)
828 ("libosmium" ,libosmium)
829 ("lua" ,lua)
830 ("postgresql" ,postgresql)
831 ("proj.4" ,proj.4)
832 ("protozero" ,protozero)
833 ("zlib" ,zlib)))
834 (native-inputs
835 `(("python-2" ,python-2)
836 ("python2-psycopg2" ,python2-psycopg2)))
837 (home-page "https://github.com/openstreetmap/osm2pgsql")
838 (synopsis "OSM data importer to postgresql")
839 (description "Osm2pgsql is a tool for loading OpenStreetMap data into a
840PostgreSQL / PostGIS database suitable for applications like rendering into a
841map, geocoding with Nominatim, or general analysis.")
842 (license license:gpl2+)))
6f91223f
JL
843
844(define-public tippecanoe
845 (package
846 (name "tippecanoe")
847 (version "1.31.5")
8f33d05e
TGR
848 (source
849 (origin
850 (method git-fetch)
851 (uri (git-reference
852 (url "https://github.com/mapbox/tippecanoe.git")
853 (commit version)))
854 (file-name (git-file-name name version))
855 (sha256
856 (base32 "1m0x931a945sr7axyhcvpwh798m58hx1zxh6ikgf9gsgqhdhmszz"))))
6f91223f
JL
857 (build-system gnu-build-system)
858 (arguments
859 `(#:phases
860 (modify-phases %standard-phases (delete 'configure))
861 #:test-target "test"
862 #:make-flags
863 (list "CC=gcc"
864 (string-append "PREFIX=" (assoc-ref %outputs "out")))))
865 (inputs
866 `(("perl" ,perl)
867 ("sqlite" ,sqlite)
868 ("zlib" ,zlib)))
869 (home-page "https://github.com/mapbox/tippecanoe")
870 (synopsis "Vector tile server for maps")
871 (description "Tippecanoe creates scale-independent view of data, so that
872the texture and density of features is visible at every zoom level, instead of
873dropping features at lower levels.")
874 (license license:bsd-2)))
ed72a133
GLV
875
876(define-public osmctools
877 (package
878 (name "osmctools")
879 (version "0.9")
880 (source
881 (origin
882 (method git-fetch)
883 (uri (git-reference
884 (url "https://gitlab.com/osm-c-tools/osmctools")
885 (commit version)))
886 (file-name (git-file-name name version))
887 (sha256
888 (base32
889 "1m8d3r1q1v05pkr8k9czrmb4xjszw6hvgsf3kn9pf0v14gpn4r8f"))))
890 (build-system gnu-build-system)
891 (native-inputs
892 `(("autoconf" ,autoconf)
893 ("automake" ,automake)))
894 (inputs
895 `(("zlib" ,zlib)))
896 (home-page "https://gitlab.com/osm-c-tools/osmctools")
897 (synopsis "Tools to convert, filter and update OpenStreetMap data files")
898 (description "This project contains a few tools which are used in the
899OpenStreetMap project. They can be used to convert, filter and update
900OpenStreetMap data files.")
901 (license license:agpl3)))
ee34be73
GLV
902
903(define-public osm-gps-map
904 (package
905 (name "osm-gps-map")
906 (version "1.1.0")
907 (source
908 (origin
909 (method url-fetch)
910 (uri (string-append
911 "https://github.com/nzjrs/osm-gps-map/releases/download/"
912 version "/osm-gps-map-" version ".tar.gz"))
913 (sha256
914 (base32
915 "11imsf4cz1dpxdjh178k2s29axmq86rkfg1pqmn7incyxmjzhbwg"))))
916 (build-system gnu-build-system)
917 (native-inputs
918 `(("gnome-common" ,gnome-common)
919 ("gtk-doc" ,gtk-doc)
920 ("pkg-config" ,pkg-config)))
921 (inputs
922 `(("cairo" ,cairo)
923 ("glib" ,glib)
924 ("gobject-introspection" ,gobject-introspection)
925 ("gtk+" ,gtk+)
926 ("libsoup" ,libsoup)))
927 (home-page "https://nzjrs.github.io/osm-gps-map/")
928 (synopsis "GTK+ widget for displaying OpenStreetMap tiles")
929 (description
930 "This package provides a GTK+ widget (and Python bindings) that when
931given GPS coordinates,draws a GPS track, and points of interest on a moving
932map display. Downloads map data from a number of websites, including
933@url{https://www.openstreetmap.org}.")
934 (license license:gpl2+)))
0f7b8a7f
EF
935
936(define-public xygrib
937 (package
938 (name "xygrib")
939 (version "1.2.6")
940 (source (origin
941 (method git-fetch)
942 (uri (git-reference
943 (url "https://github.com/opengribs/XyGrib.git")
944 (commit (string-append "v" version))))
945 (file-name (git-file-name name version))
946 (sha256
947 (base32
948 "0qzaaavil2c7mkkai5mg54cv8r452i7psy7cg75qjja96d2d7rbd"))
949 (modules '((guix build utils)))
950 (snippet
951 '(begin (delete-file-recursively "data/fonts") #t))))
952 (build-system cmake-build-system)
953 (arguments
954 `(#:phases
955 (modify-phases %standard-phases
956 (add-after 'unpack 'patch-directories
957 (lambda* (#:key inputs #:allow-other-keys)
958 (let ((jpeg (assoc-ref inputs "openjpeg"))
959 (font (assoc-ref inputs "font-liberation")))
960 (substitute* "CMakeLists.txt"
961 ;; Find libjpeg.
962 (("/usr") jpeg)
963 ;; Fix install locations.
964 (("set\\(PREFIX_BIN.*") "set(PREFIX_BIN \"bin\")\n")
965 (("set\\(PREFIX_PKGDATA.*") "set(PREFIX_PKGDATA \"share/${PROJECT_NAME}\")\n")
966 ;; Skip looking for the static library.
967 (("\"libnova.a\"") ""))
968 ;; Don't use the bundled font-liberation.
969 (substitute* "src/util/Font.cpp"
970 (("Util::pathFonts\\(\\)\\+\"liberation-fonts/\"")
971 (string-append "\"" font "/share/fonts/truetype/\"")))
972 (substitute* "src/util/Util.h"
973 (("pathData\\(\\)\\+\"data/fonts/\"")
974 (string-append "\"" font "/share/fonts/\""))))
975 #t)))
976 #:tests? #f)) ; no tests
977 (native-inputs
978 `(("qttools" ,qttools)))
979 (inputs
980 `(("bzip2" ,bzip2)
981 ("font-liberation" ,font-liberation)
982 ("libnova" ,libnova)
983 ("libpng" ,libpng)
984 ("openjpeg" ,openjpeg)
985 ("proj.4" ,proj.4)
986 ("qtbase" ,qtbase)
987 ("zlib" ,zlib)))
988 (synopsis "Weather Forecast Visualization")
989 (description
990 "XyGrib is a Grib file reader and visualizes meteorological data providing
991an off-line capability to analyse weather forecasts or hindcasts. It is
992intended to be used as a capable weather work station for anyone with a serious
993interest in examining weather. This would include members of the sailing
994community, private and sport aviators, farmers, weather buffs and many more.
995XyGrib is the continuation of the zyGrib software package with a new team of
996volunteers.")
997 (home-page "https://opengribs.org")
998 (license license:gpl3+)))