Geospatial Image Processing for Python

Related tags

Geolocation gippy
Overview

GIPPY

https://circleci.com/gh/gipit/gippy.svg?style=svg&circle-token=fb40999b03328dc633a4d654f680eb5e1a6f3a2d

Gippy is a Python library for image processing of geospatial raster data. The core of the library is implemented as a C++ library, libgip, with Python bindings automatically generated with swig. Gippy encapsulates the functionality of GDAL and CImg that automatically handles issues common to geospatial data, such as handling of nodata values and chunking up of very large images by saving chains of functions and only processing the image in pieces upon a read request. In addition to providing a library of image processing functions and algorithms, Gippy can also be used as a simpler interface to GDAL for the opening, creating, reading and writing of geospatial raster files in Python.

See the full documentation.

Authors and Contributors

  • Matthew Hanson
  • Ian Cooke
  • Alireza Jazayeri
**GIPPY**: Geospatial Image Processing for Python

AUTHOR: Matthew Hanson
EMAIL:  [email protected]

Copyright (C) 2015 Applied Geosolutions
EMAIL: [email protected]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Comments
  • ImportError: libgip.so: cannot open shared object file: No such file or directory

    ImportError: libgip.so: cannot open shared object file: No such file or directory

    This happens on master as well as develop:

    #!/bin/bash
    
    $PYTHON setup.py build
    $PYTHON setup.py install
    
    ls lib/python2.7/site-packages/gippy
    algorithms.py   _algorithms.so  gippy.pyc  __init__.py   libgip.so  test.pyc    version.pyc
    algorithms.pyc  gippy.py        _gippy.so  __init__.pyc  test.py    version.py
    
    Python 2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:09:15) 
    [GCC 4.4.7 20120313 (Red Hat 4.4.7-1)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    Anaconda is brought to you by Continuum Analytics.
    Please check out: http://continuum.io/thanks and https://anaconda.org
    >>> import numpy
    >>> import potrace
    >>> import gippy
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/home/vagrant/miniconda2/envs/bfalg/lib/python2.7/site-packages/gippy/__init__.py", line 41, in <module>
        from .gippy import init, DataType, GeoImage, GeoVector, Options
      File "/home/vagrant/miniconda2/envs/bfalg/lib/python2.7/site-packages/gippy/gippy.py", line 30, in <module>
        _gippy = swig_import_helper()
      File "/home/vagrant/miniconda2/envs/bfalg/lib/python2.7/site-packages/gippy/gippy.py", line 26, in swig_import_helper
        _mod = imp.load_module('_gippy', fp, pathname, description)
    ImportError: libgip.so: cannot open shared object file: No such file or directory
    
    opened by benhosmer 15
  • libgip.so: cannot open shared object file

    libgip.so: cannot open shared object file

    I'm attempting to install gippy on my laptop from my (up-to-date) fork of the repo. I've come across this issue with libgip.so before, but I cannot remember the cause. Leaving only the commands and import error

    $ sudo git clean -xfd ; \
      python setup.py build ; \
      sudo python setup.py install ; \
      cd ~ ; \
      python -c "import gippy ; print 'success' "
    
    [[[ snipped compilation and installation output ]]]
    
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/usr/local/lib/python2.7/dist-packages/gippy/__init__.py", line 23, in <module>
        from gippy import *
      File "/usr/local/lib/python2.7/dist-packages/gippy/gippy.py", line 32, in <module>
        _gippy = swig_import_helper()
      File "/usr/local/lib/python2.7/dist-packages/gippy/gippy.py", line 28, in swig_import_helper
        _mod = imp.load_module('_gippy', fp, pathname, description)
    ImportError: libgip.so: cannot open shared object file: No such file or directory
    

    But everything seems to be there

    /usr/local/lib/python2.7/dist-packages/
    ├── gippy
    │   ├── algorithms.py
    │   ├── algorithms.pyc
    │   ├── _algorithms.so
    │   ├── gippy.py
    │   ├── gippy.pyc
    │   ├── _gippy.so
    │   ├── __init__.py
    │   ├── __init__.pyc
    │   ├── libgip.so
    │   ├── tests.py
    │   ├── tests.pyc
    │   ├── _tests.so
    │   ├── version.py
    │   └── version.pyc
    └── gippy-0.3.3.egg-info
        ├── dependency_links.txt
        ├── PKG-INFO
        ├── SOURCES.txt
        └── top_level.txt
    

    below is the build output:

    running build
    running build_py
    creating build
    creating build/lib.linux-x86_64-2.7
    creating build/lib.linux-x86_64-2.7/gippy
    copying gippy/version.py -> build/lib.linux-x86_64-2.7/gippy
    copying gippy/__init__.py -> build/lib.linux-x86_64-2.7/gippy
    running build_ext
    building 'gippy/libgip' extension
    creating build/temp.linux-x86_64-2.7
    creating build/temp.linux-x86_64-2.7/GIP
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoRaster.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoRaster.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoImage.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoImage.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoAlgorithms.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoAlgorithms.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/gip_gdal.cpp -o build/temp.linux-x86_64-2.7/GIP/gip_gdal.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoResource.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoResource.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoSpatialContext.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoSpatialContext.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoVectorResource.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoVectorResource.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/tests.cpp -o build/temp.linux-x86_64-2.7/GIP/tests.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoImages.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoImages.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    c++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/GIP/GeoRaster.o build/temp.linux-x86_64-2.7/GIP/GeoImage.o build/temp.linux-x86_64-2.7/GIP/GeoAlgorithms.o build/temp.linux-x86_64-2.7/GIP/gip_gdal.o build/temp.linux-x86_64-2.7/GIP/GeoResource.o build/temp.linux-x86_64-2.7/GIP/GeoSpatialContext.o build/temp.linux-x86_64-2.7/GIP/GeoVectorResource.o build/temp.linux-x86_64-2.7/GIP/tests.o build/temp.linux-x86_64-2.7/GIP/GeoImages.o -Lbuild/lib.linux-x86_64-2.7/gippy -o build/lib.linux-x86_64-2.7/gippy/libgip.so
    building 'gippy/_gippy' extension
    swigging gippy/gippy.i to gippy/gippy_wrap.cpp
    swig -python -c++ -w509 -IGIP -o gippy/gippy_wrap.cpp gippy/gippy.i
    creating build/temp.linux-x86_64-2.7/gippy
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/home/icooke/.local/lib/python2.7/site-packages/numpy/core/include -I/usr/include/gdal -I/usr/include/python2.7 -c gippy/gippy_wrap.cpp -o build/temp.linux-x86_64-2.7/gippy/gippy_wrap.o -fPIC -std=c++11 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    gippy/gippy_wrap.cpp: In function ‘PyObject* _wrap_new_GeoImages(PyObject*, PyObject*)’:
    gippy/gippy_wrap.cpp:4765:61: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
      return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
                                                                 ^
    gippy/gippy_wrap.cpp:28262:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    gippy/gippy_wrap.cpp: In function ‘PyObject* _wrap_new_mapss(PyObject*, PyObject*)’:
    gippy/gippy_wrap.cpp:5295:4: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<map_type>(),0);
        ^
    gippy/gippy_wrap.cpp:11317:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    c++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/gippy/gippy_wrap.o -Lbuild/lib.linux-x86_64-2.7/gippy -lgip -lgdal -lboost_system -lboost_filesystem -lboost_log -lpthread -o build/lib.linux-x86_64-2.7/gippy/_gippy.so
    building 'gippy/_tests' extension
    swigging gippy/tests.i to gippy/tests_wrap.cpp
    swig -python -c++ -w509 -IGIP -o gippy/tests_wrap.cpp gippy/tests.i
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/home/icooke/.local/lib/python2.7/site-packages/numpy/core/include -I/usr/include/gdal -I/usr/include/python2.7 -c gippy/tests_wrap.cpp -o build/temp.linux-x86_64-2.7/gippy/tests_wrap.o -fPIC -std=c++11 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    gippy/tests_wrap.cpp: In function ‘PyObject* _wrap_new_GeoImages(PyObject*, PyObject*)’:
    gippy/tests_wrap.cpp:4758:61: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
      return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
                                                                 ^
    gippy/tests_wrap.cpp:28243:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    gippy/tests_wrap.cpp: In function ‘PyObject* _wrap_new_mapss(PyObject*, PyObject*)’:
    gippy/tests_wrap.cpp:5288:4: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<map_type>(),0);
        ^
    gippy/tests_wrap.cpp:11298:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    c++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/gippy/tests_wrap.o -Lbuild/lib.linux-x86_64-2.7/gippy -lgip -lgdal -lboost_system -lboost_filesystem -lboost_log -lpthread -o build/lib.linux-x86_64-2.7/gippy/_tests.so
    building 'gippy/_algorithms' extension
    swigging gippy/algorithms.i to gippy/algorithms_wrap.cpp
    swig -python -c++ -w509 -IGIP -o gippy/algorithms_wrap.cpp gippy/algorithms.i
    x86_64-linux-gnu-gcc -pthread -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fno-strict-aliasing -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -fPIC -IGIP -I/home/icooke/.local/lib/python2.7/site-packages/numpy/core/include -I/usr/include/gdal -I/usr/include/python2.7 -c gippy/algorithms_wrap.cpp -o build/temp.linux-x86_64-2.7/gippy/algorithms_wrap.o -fPIC -std=c++11 -DBOOST_LOG_DYN_LINK
    cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++
    gippy/algorithms_wrap.cpp: In function ‘PyObject* _wrap_new_GeoImages(PyObject*, PyObject*)’:
    gippy/algorithms_wrap.cpp:4757:61: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
      return traits_asptr_stdseq<std::vector<T> >::asptr(obj, vec);
                                                                 ^
    gippy/algorithms_wrap.cpp:28258:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    gippy/algorithms_wrap.cpp: In function ‘PyObject* _wrap_new_mapss(PyObject*, PyObject*)’:
    gippy/algorithms_wrap.cpp:5287:4: warning: ‘argv[0]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
        res = SWIG_ConvertPtr(obj,(void**)&p,swig::type_info<map_type>(),0);
        ^
    gippy/algorithms_wrap.cpp:11313:13: note: ‘argv[0]’ was declared here
       PyObject *argv[2];
                 ^
    c++ -pthread -shared -Wl,-O1 -Wl,-Bsymbolic-functions -Wl,-Bsymbolic-functions -Wl,-z,relro -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security -Wl,-Bsymbolic-functions -Wl,-z,relro -D_FORTIFY_SOURCE=2 -g -fstack-protector-strong -Wformat -Werror=format-security build/temp.linux-x86_64-2.7/gippy/algorithms_wrap.o -Lbuild/lib.linux-x86_64-2.7/gippy -lgip -lgdal -lboost_system -lboost_filesystem -lboost_log -lpthread -o build/lib.linux-x86_64-2.7/gippy/_algorithms.so
    running install
    module <setuptools.extension.Extension instance at 0x7f3ae522d2d8> /usr/local/lib/python2.7/dist-packages/gippy
    module <setuptools.extension.Extension instance at 0x7f3ae37236c8> /usr/local/lib/python2.7/dist-packages/gippy
    module <setuptools.extension.Extension instance at 0x7f3ae3723758> /usr/local/lib/python2.7/dist-packages/gippy
    module <setuptools.extension.Extension instance at 0x7f3ae3723a70> /usr/local/lib/python2.7/dist-packages/gippy
    running build_ext
    running build
    running build_py
    copying gippy/tests.py -> build/lib.linux-x86_64-2.7/gippy
    copying gippy/algorithms.py -> build/lib.linux-x86_64-2.7/gippy
    copying gippy/gippy.py -> build/lib.linux-x86_64-2.7/gippy
    running install_lib
    creating /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/tests.py -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/version.py -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/__init__.py -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/libgip.so -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/algorithms.py -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/gippy.py -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/_algorithms.so -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/_gippy.so -> /usr/local/lib/python2.7/dist-packages/gippy
    copying build/lib.linux-x86_64-2.7/gippy/_tests.so -> /usr/local/lib/python2.7/dist-packages/gippy
    byte-compiling /usr/local/lib/python2.7/dist-packages/gippy/tests.py to tests.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/gippy/version.py to version.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/gippy/__init__.py to __init__.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/gippy/algorithms.py to algorithms.pyc
    byte-compiling /usr/local/lib/python2.7/dist-packages/gippy/gippy.py to gippy.pyc
    running install_egg_info
    running egg_info
    creating gippy.egg-info
    writing gippy.egg-info/PKG-INFO
    writing top-level names to gippy.egg-info/top_level.txt
    writing dependency_links to gippy.egg-info/dependency_links.txt
    writing manifest file 'gippy.egg-info/SOURCES.txt'
    reading manifest file 'gippy.egg-info/SOURCES.txt'
    reading manifest template 'MANIFEST.in'
    writing manifest file 'gippy.egg-info/SOURCES.txt'
    Copying gippy.egg-info to /usr/local/lib/python2.7/dist-packages/gippy-0.3.3.egg-info
    running install_scripts
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "gippy/__init__.py", line 23, in <module>
        from gippy import *
      File "gippy/gippy.py", line 32, in <module>
        _gippy = swig_import_helper()
      File "gippy/gippy.py", line 24, in swig_import_helper
        import _gippy
    ImportError: No module named _gippy
    
    question 
    opened by ircwaves 8
  • Installation problem on Archlinux

    Installation problem on Archlinux

    Hi,

    Installation seems not working on Archlinux :

    $ python2 setup.py install running install running build_ext building 'gippy/libgip' extension creating build creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/GIP gcc -pthread -fno-strict-aliasing -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -DNDEBUG -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fPIC -IGIP -I/usr/lib/python2.7/site-packages/numpy/core/include -I/usr/include -I/usr/include/python2.7 -c GIP/GeoVectorResource.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoVectorResource.o -fPIC -O3 -std=c++11 -Wno-maybe-uninitialized GIP/GeoVectorResource.cpp: Dans le constructeur ‘gip::GeoVectorResource::GeoVectorResource(std::__cxx11::string, std::__cxx11::string)’: GIP/GeoVectorResource.cpp:37:30: erreur : ‘Open’ is not a member of ‘OGRSFDriverRegistrar’ _OGRDataSource.reset(OGRSFDriverRegistrar::Open(filename.c_str()), OGRDataSource::DestroyDataSource); ^~~~~~~~~~~~~~~~~~~~ GIP/GeoVectorResource.cpp:37:91: attention : ‘static void OGRDataSource::DestroyDataSource(OGRDataSource*)’ is deprecated [-Wdeprecated-declarations] .reset(OGRSFDriverRegistrar::Open(filename.c_str()), OGRDataSource::DestroyDataSource); ^~~~~~~~~~~~~~~~~ In file included from GIP/gip/GeoVectorResource.h:28:0, from GIP/GeoVectorResource.cpp:22: /usr/include/ogrsf_frmts.h:245:25: note : declared here static void DestroyDataSource( OGRDataSource * ) OGR_DEPRECATED("Use GDALDataset class instead"); ^~~~~~~~~~~~~~~~~ error: command 'gcc' failed with exit status 1

    I tried with pip before :

    $ pip install gippy Collecting gippy Using cached gippy-0.3.5.tar.gz Building wheels for collected packages: gippy Running setup.py bdist_wheel for gippy ... error Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-_8sgx0ja/gippy/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" bdist_wheel -d /tmp/tmp6edpypnrpip-wheel- --python-tag cp35: running bdist_wheel running build_ext building 'gippy/libgip' extension creating build creating build/temp.linux-x86_64-3.5 creating build/temp.linux-x86_64-3.5/GIP gcc -pthread -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fPIC -IGIP -I/usr/include/python3.5m -c GIP/tests.cpp -o build/temp.linux-x86_64-3.5/GIP/tests.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK cc1plus: attention : command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ In file included from GIP/gip/GeoImage.h:25:0, from GIP/gip/tests.h:25, from GIP/tests.cpp:23: GIP/gip/GeoResource.h:32:28: erreur fatale : gdal/gdal_priv.h : Aucun fichier ou dossier de ce type #include <gdal/gdal_priv.h> ^ compilation terminée. error: command 'gcc' failed with exit status 1

    Failed building wheel for gippy Running setup.py clean for gippy Failed to build gippy Installing collected packages: gippy Running setup.py install for gippy ... error Complete output from command /usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-_8sgx0ja/gippy/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-wq24jaxn-record/install-record.txt --single-version-externally-managed --compile: running install running build_ext building 'gippy/libgip' extension creating build creating build/temp.linux-x86_64-3.5 creating build/temp.linux-x86_64-3.5/GIP gcc -pthread -Wno-unused-result -Wsign-compare -Wunreachable-code -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong -fPIC -IGIP -I/usr/include/python3.5m -c GIP/tests.cpp -o build/temp.linux-x86_64-3.5/GIP/tests.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK cc1plus: attention : command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ In file included from GIP/gip/GeoImage.h:25:0, from GIP/gip/tests.h:25, from GIP/tests.cpp:23: GIP/gip/GeoResource.h:32:28: erreur fatale : gdal/gdal_priv.h : Aucun fichier ou dossier de ce type #include <gdal/gdal_priv.h> ^ compilation terminée. error: command 'gcc' failed with exit status 1

    ----------------------------------------
    

    Command "/usr/bin/python -u -c "import setuptools, tokenize;file='/tmp/pip-build-_8sgx0ja/gippy/setup.py';exec(compile(getattr(tokenize, 'open', open)(file).read().replace('\r\n', '\n'), file, 'exec'))" install --record /tmp/pip-wq24jaxn-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-_8sgx0ja/gippy/

    I have gdal_priv.h on my installation :

    $ locate gdal_priv.h /usr/include/gdal_priv.h $ gdal-config --cflags -I/usr/include

    Any suggestion ?

    Sincerely,

    Sylvain

    opened by kikislater 7
  • Installation does not work.

    Installation does not work.

    Tried:

    sudo apt-get install libgdal1h gdal-bin libgdal-dev g++4.8

    E: Unable to locate package g++4.8 E: Couldn't find any package by regex 'g++4.8'

    Also, within a virtualenv, tried

    pip install gippy -pre

    and got:

    Invalid requirement: '–pre' Traceback (most recent call last): File "/home/ubuntu/venv2/local/lib/python2.7/site-packages/pip/req/req_install.py", line 77, in init req = pkg_resources.Requirement.parse(req) File "/home/ubuntu/venv2/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/init.py", line 3036, in parse req, = parse_requirements(s) File "/home/ubuntu/venv2/local/lib/python2.7/site-packages/pip/_vendor/pkg_resources/init.py", line 2967, in parse_requirements raise RequirementParseError("Missing distribution spec", line) RequirementParseError: Missing distribution spec –pre

    opened by kstamatiou 7
  • fix(chunks): using numchunks didn't cover image

    fix(chunks): using numchunks didn't cover image

    I believe this is straight forward -- found in 0.3.x branch, and also exists in mainline development.

    I hope the expansion/tweaks to the chunking test make sense to cover the cases. The previous test_GeoResource.test_chunking didn't actually assert about the final chunk.

    :+1: to @justinfisk for the help in sorting this out on the 0.3.x branch.

    opened by ircwaves 5
  • error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    I'm getting this error when trying to install gippy: command 'x86_64-linux-gnu-gcc' failed with exit status 1, after running sudo python setup.py install

    running install DEBUG:setup.py:_install finalize_options DEBUG:setup.py:_install run running build_ext DEBUG:setup.py:_build_ext run building 'gippy/libgip' extension x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -IGIP -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/gdal -I/usr/include/python2.7 -c GIP/GeoAlgorithms.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoAlgorithms.o -fPIC -O3 -std=c++11 -Wno-maybe-uninitialized x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -fPIC -IGIP -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/include/gdal -I/usr/include/python2.7 -c GIP/GeoVectorResource.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoVectorResource.o -fPIC -O3 -std=c++11 -Wno-maybe-uninitialized GIP/GeoVectorResource.cpp: In constructor 'gip::GeoVectorResource::GeoVectorResource(std::string, std::string)': GIP/GeoVectorResource.cpp:37:30: error: 'Open' is not a member of 'OGRSFDriverRegistrar' _OGRDataSource.reset(OGRSFDriverRegistrar::Open(filename.c_str()), OGRDataSource::DestroyDataSource); ^ GIP/GeoVectorResource.cpp:37:91: warning: 'static void OGRDataSource::DestroyDataSource(OGRDataSource*)' is deprecated (declared at /usr/include/gdal/ogrsf_frmts.h:245) [-Wdeprecated-declarations] _OGRDataSource.reset(OGRSFDriverRegistrar::Open(filename.c_str()), OGRDataSource::DestroyDataSource); ^ GIP/GeoVectorResource.cpp: In member function 'gip::BoundingBox gip::GeoVectorResource::extent() const': GIP/GeoVectorResource.cpp:99:38: warning: ignoring return value of function declared with attribute warn_unused_result [-Wunused-result] _Layer->GetExtent(&ext, true); ^ error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    Could anyone help me to resolve this?

    opened by yurithefury 4
  • How do I read a GeoImage into integral typed numpy arrays?

    How do I read a GeoImage into integral typed numpy arrays?

    This is another question related to migrating gips from gippy 0.3 to 1.0.

    I've instantiated GeoImages using an existing file in a couple different ways, sometimes in a form that lets me specify a dtype, sometimes not. But regardless of the value of eg image.type().string(), or image[0].type().string(), the numpy array returned by image.read() is always float64. I can work around that by eg image.read().astype('uint16'), but that results in two unneeded type conversions, which hurts performance.

    The band I need to process is the 16-bit QA band for landsat C1 data. float64 is obviously a type error if you try to do bit-fiddling on it (>> and & in our case).

    opened by ra-tolson 3
  • python setup.py error

    python setup.py error

    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "gippy/__init__.py", line 23, in <module>
        from gippy import *
      File "gippy/gippy.py", line 30, in <module>
        _gippy = swig_import_helper()
      File "gippy/gippy.py", line 22, in swig_import_helper
        import _gippy
    ImportError: No module named _gippy
    
    bug 
    opened by scisco 3
  • GIP/gip/GeoResource.h:32:28: fatal error: gdal/gdal_priv.h: No such file or directory

    GIP/gip/GeoResource.h:32:28: fatal error: gdal/gdal_priv.h: No such file or directory

    I am using GDAL version 1.11.2 and gdal_priv.h is located at ./gdal1.11.2/gcore/gdal_priv.h. When I compile gippy, I get this compiler error:

    ~/dev/gis/gippy$ python setup.py build running build running build_py creating build creating build/lib.linux-x86_64-2.7 creating build/lib.linux-x86_64-2.7/gippy copying gippy/version.py -> build/lib.linux-x86_64-2.7/gippy copying gippy/init.py -> build/lib.linux-x86_64-2.7/gippy running build_ext building 'gippy/libgip' extension creating build/temp.linux-x86_64-2.7 creating build/temp.linux-x86_64-2.7/GIP x86_64-linux-gnu-gcc -pthread -fno-strict-aliasing -DNDEBUG -g -fwrapv -O2 -Wall -Wstrict-prototypes -fPIC -IGIP -I/usr/include/python2.7 -c GIP/GeoImage.cpp -o build/temp.linux-x86_64-2.7/GIP/GeoImage.o -std=c++11 -O3 -DBOOST_LOG_DYN_LINK cc1plus: warning: command line option ‘-Wstrict-prototypes’ is valid for C/ObjC but not for C++ [enabled by default] In file included from GIP/gip/GeoImage.h:25:0, from GIP/GeoImage.cpp:22: GIP/gip/GeoResource.h:32:28: fatal error: gdal/gdal_priv.h: No such file or directory #include <gdal/gdal_priv.h> ^ compilation terminated. error: command 'x86_64-linux-gnu-gcc' failed with exit status 1

    opened by bmoskovi 3
  • support GDAL SetGeotransform or equivalent

    support GDAL SetGeotransform or equivalent

    I typically construct geo-image data by specifying an array, a projection, and a geotransform. This could be handled in gippy with the existing constructors if there was a method to set the geotransform (as in GDAL), or separate methods to set spatial resolution, and UL X and Y coordinates.

    feature 
    opened by bhbraswell 3
  • Rect width/height methods assume grid spacing of 1

    Rect width/height methods assume grid spacing of 1

    as discussed with @matthewhanson -- the width being

    p1.x - p0.x + 1 
    

    properly computes the width for a pixel grid where the spacing is 1. But if the spacing is not 1 (call it res), then this will be res - 1 short of the actual width.

    opened by ircwaves 3
  • Build errors: attempt to instantiate abstract class; other likely problems relating to heavy abuses of virtual classes, overrides, etc?

    Build errors: attempt to instantiate abstract class; other likely problems relating to heavy abuses of virtual classes, overrides, etc?

    This repo needs some serious attention w.r.t. to successful c++ compilation with a standard compiler flags. I would suggest far less use of virtual/abstract classes, and/or re-writing the code in a different language that is designed for that.

    opened by justin-ashworth-research 1
  • using cimg.i CImgToArr with boost::python segfault

    using cimg.i CImgToArr with boost::python segfault

    The ArrToCImg() function in cimg.i was causing a segfault

    The fix is detailed below

    `// Convert CImg into numpy array - https://github.com/gipit/gippy/blob/master/gippy/cimg.i // template PyObject* CImgToArr(CImg cimg) {
    int typenum; int numdim = 4;
    npy_intp dims[] = { cimg.spectrum(), cimg.depth(), cimg.height(), cimg.width() }; if (typeid(T) == typeid(uint8_t)) typenum = NPY_UINT8; else if (typeid(T) == typeid(int8_t)) typenum = NPY_INT8; else if (typeid(T) == typeid(uint16_t)) typenum = NPY_UINT16; else if (typeid(T) == typeid(int16_t)) typenum = NPY_INT16; else if (typeid(T) == typeid(uint32_t)) typenum = NPY_UINT32; else if (typeid(T) == typeid(int32_t)) typenum = NPY_INT32; else if (typeid(T) == typeid(uint64_t)) typenum = NPY_UINT64; else if (typeid(T) == typeid(int64_t)) typenum = NPY_INT64; else if (typeid(T) == typeid(float)) typenum = NPY_FLOAT32; else if (typeid(T) == typeid(double)) typenum = NPY_FLOAT64; else throw(std::runtime_error("Error converting CImg to numpy array"));

    if (cimg.spectrum() == 1) { numdim = 3; if (cimg.depth() == 1) { numdim=2; if (cimg.height() == 1) { numdim=1; } } }

    // segfault@ was caused by not calling import_array() inside BOOST_PYTHON_MODULE() // however import_array() didn't compile and required a second fix, a wrapper function // for import_array() as noted in https://wanzenbug.xyz/boost-numpy/ // // reinterpret_cast https://forge.epn-campus.eu/svn/magnetix/src/pythonAPI/NumpyConverter.cpp // PyArray_SimpleNewFromData https://docs.scipy.org/doc/numpy-1.13.0/reference/c-api.array.html // https://stackoverflow.com/questions/30357115/pyarray-simplenewfromdata-example // static PyObject* arr; arr = PyArray_SimpleNewFromData(numdim, &dims[4-numdim], typenum, reinterpret_cast<void*>(cimg.data())); return arr; } // CImgToArr()

    // segfault@ in CImgToArr was caused by not calling import_array() inside // BOOST_PYTHON_MODULE() as noted here // https://www.reddit.com/r/cpp_questions/comments/54clp9/python_c_extension_segfault_in_pyarray_simplenew/ // // however import_array() didn't compile and required a second fix, a wrapper function // for import_array() as noted in https://wanzenbug.xyz/boost-numpy/ // static void * wrap_import_array() { import_array(); return NULL; }

    // wrap python callable functions using boost // // http://openalea.gforge.inria.fr/dokuwiki/data/pdfex/PDF_documentation_package_how_to_integrate_cpp_code_in_python.pdf // https://github.com/TNG/boost-python-examples // BOOST_PYTHON_MODULE(py_run_startracker) {

    using namespace boost::python; using namespace cimg_library; using namespace std;

    // make sure to initialise! Py_Initialize(); bn::initialize();

    wrap_import_array(); // wrapper to fix import_array() segfault!

    boost::python::def("np_thresholdOtsu" , np_thresholdOtsu);

    } // BOOST_PYTHON_MODULE()`

    opened by moloned 0
  • cookie_cutter fix, add alltouch, drop py27

    cookie_cutter fix, add alltouch, drop py27

    • Fixes #172 (res ignored by cookie_cutter)
    • adds alltouch parameter.
    • drops python2.7 support from .circleci

    cookie_cutter note

    The key piece here, is that the extent (bbox) pulled out of the GeoFeature in cookie_cutter is a vector (POINT) extent, and the bbox passed into GeoImage.create_from needs to already be a raster (AREA) extent (in the GDAL DataModel model parlance).

    opened by ircwaves 1
  • build issue with Python 3.5.1

    build issue with Python 3.5.1

    Hello!

    When I try to do a "pip install --user gippy" in Python 3.5.1, I receive the following error:

    python3.5m -c gippy/gippy_wrap.cpp -o build/temp.linux-x86_64-3.5/gippy/gippy_wrap.o -fPIC -O3 -std=c++11 -D GDAL2 -Wno-maybe-uninitialized gippy/gippy_wrap.cpp:5040:34: fatal error: python2.7/Python.h: No such file or directory #include <python2.7/Python.h>

    Can you provide any assistance into why the pip package is looking for python2.7/Python.h instead of python3.5/Python.h?

    opened by bottoj 2
  • cookie_cutter: xres yres ignored

    cookie_cutter: xres yres ignored

    Passing xres, yres to cookie_cutter is ignored because here: https://github.com/gipit/gippy/blob/master/GIP/GeoAlgorithms.cpp#L254 cookie_cutter just grabs the bounding box from the GeoFeature, which is passed down to this code (via GeoImage.create): https://github.com/gipit/gippy/blob/master/GIP/GeoResource.cpp#L101-L103 and the bounding box is used to compute the resolution being stuffed into the image.

    issue demo:

    from gippy import GeoVector, GeoImage
    from gippy.algorithms import cookie_cutter
    
    
    v = GeoVector('/home/icooke/merged.shp')
    fns = ['/vsizip//tmp/PRISM_ppt_provisional_4kmD2_20190601_bil.zip/PRISM_ppt_provisional_4kmD2_20190601_bil.bil']
    imgs = [GeoImage(fn) for fn in fns]
    x = cookie_cutter(imgs, 'out.tif', v[0], xres=1000, yres=1000)
    print('resolution', x.resolution().x(), x.resolution().y())
    
    # output:
    # (venv36) icooke@north:~$ python3 ~/cookie_cutter.py 
    # resolution 997.8931017867908 -995.2071382963369
    
    bug 
    opened by ircwaves 1
  • GeoImage.open doesn't seem to follow docs

    GeoImage.open doesn't seem to follow docs

    Looks like either the API has drifted or else the docs need updating. The docs say you can go:

    geoimg = GeoImage.open(filename, bandnames=(['red', 'green', 'blue']), nodata=0)
    

    But when I try it it looks like it's iterating over the filename's characters:

    (Pdb) gippy.GeoImage.open('foo.tif')
    *** RuntimeError: 4: f: No such file or directory
    

    I can workaround with a list though:

    (Pdb) gippy.GeoImage.open(['foo.tif'])
    *** RuntimeError: 4: foo.tif: No such file or directory
    

    The reason I'd like to call GeoImage.open() over GeoImage() is that with the former I can set nodata & gain as part of the call; I don't see how to do that with GeoImage().

    opened by ra-tolson 1
Releases(1.0.3)
  • 1.0.3(Mar 19, 2019)

    [v1.0.3] - 2019-03-18

    • fixes setting of nodata in GeoImage.open function
    • allow dictionary file creation options to be passed to GeoImage.create() and cookie_cutter
    • added kmeans algorithm
    • fix histogram function, now returns doubles
    • added spectral_statistics algorithm and GeoImage::spectral_statistics function
    • Detailed CHANGELOG added
    Source code(tar.gz)
    Source code(zip)
Owner
GIPIT
Group for the GIPS and GIPPY open source projects
GIPIT
WebGL2 powered geospatial visualization layers

deck.gl | Website WebGL2-powered, highly performant large-scale data visualization deck.gl is designed to simplify high-performance, WebGL-based visua

Vis.gl 10.5k Jan 8, 2023
Rasterio reads and writes geospatial raster datasets

Rasterio Rasterio reads and writes geospatial raster data. Geographic information systems use GeoTIFF and other formats to organize and store gridded,

Mapbox 1.9k Jan 7, 2023
Summary statistics of geospatial raster datasets based on vector geometries.

rasterstats rasterstats is a Python module for summarizing geospatial raster datasets based on vector geometries. It includes functions for zonal stat

Matthew Perry 437 Dec 23, 2022
gpdvega is a bridge between GeoPandas and Altair that allows to seamlessly chart geospatial data

gpdvega gpdvega is a bridge between GeoPandas a geospatial extension of Pandas and the declarative statistical visualization library Altair, which all

Ilia Timofeev 49 Jul 25, 2022
GeoNode is an open source platform that facilitates the creation, sharing, and collaborative use of geospatial data.

Table of Contents What is GeoNode? Try out GeoNode Install Learn GeoNode Development Contributing Roadmap Showcase Most useful links Licensing What is

GeoNode Development Team 1.2k Dec 26, 2022
🌐 Local tile server for viewing geospatial raster files with ipyleaflet

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large raster (gigabytes) you have locally? This is for you. A Flask application

Bane Sullivan 192 Jan 4, 2023
Minimum Bounding Box of Geospatial data

BBOX Problem definition: The spatial data users often are required to obtain the coordinates of the minimum bounding box of vector and raster data in

Ali Khosravi Kazazi 1 Sep 8, 2022
h3-js provides a JavaScript version of H3, a hexagon-based geospatial indexing system.

h3-js The h3-js library provides a pure-JavaScript version of the H3 Core Library, a hexagon-based geographic grid system. It can be used either in No

Uber Open Source 648 Jan 7, 2023
🌐 Local tile server for viewing geospatial raster files with ipyleaflet or folium

?? Local Tile Server for Geospatial Rasters Need to visualize a rather large (gigabytes) raster you have locally? This is for you. A Flask application

Bane Sullivan 192 Jan 4, 2023
The geospatial toolkit for redistricting data.

maup maup is the geospatial toolkit for redistricting data. The package streamlines the basic workflows that arise when working with blocks, precincts

Metric Geometry and Gerrymandering Group 60 Dec 5, 2022
A part of HyRiver software stack for handling geospatial data manipulations

Package Description Status PyNHD Navigate and subset NHDPlus (MR and HR) using web services Py3DEP Access topographic data through National Map's 3DEP

Taher Chegini 5 Dec 14, 2022
Enable geospatial data mining through Google Earth Engine in Grasshopper 3D, via its most recent Hops component.

AALU_Geo Mining This repository is produced for a masterclass at the Architectural Association Landscape Urbanism programme. Requirements Rhinoceros (

null 4 Nov 16, 2022
Specification for storing geospatial vector data (point, line, polygon) in Parquet

GeoParquet About This repository defines how to store geospatial vector data (point, lines, polygons) in Apache Parquet, a popular columnar storage fo

Open Geospatial Consortium 449 Dec 27, 2022
Python package for earth-observing satellite data processing

Satpy The Satpy package is a python library for reading and manipulating meteorological remote sensing data and writing it to various image and data f

PyTroll 882 Dec 27, 2022
A toolbox for processing earth observation data with Python.

eo-box eobox is a Python package with a small collection of tools for working with Remote Sensing / Earth Observation data. Package Overview So far, t

null 13 Jan 6, 2022
Processing and interpolating spatial data with a twist of machine learning

Documentation | Documentation (dev version) | Contact | Part of the Fatiando a Terra project About Verde is a Python library for processing spatial da

Fatiando a Terra 468 Dec 20, 2022
framework for large-scale SAR satellite data processing

pyroSAR A Python Framework for Large-Scale SAR Satellite Data Processing The pyroSAR package aims at providing a complete solution for the scalable or

John Truckenbrodt 389 Dec 21, 2022
Stitch image tiles into larger composite TIFs

untiler Utility to take a directory of {z}/{x}/{y}.(jpg|png) tiles, and stitch into a scenetiff (tif w/ exact merc tile bounds). Future versions will

Mapbox 38 Dec 16, 2022
This is a simple python code to get IP address and its location using python

IP address & Location finder @DEV/ED : Pavan Ananth Sharma Dependencies: ip2geotools Note: use pip install ip2geotools to install this in your termin

Pavan Ananth Sharma 2 Jul 5, 2022