r-spatial / sf

Simple Features for R
https://r-spatial.github.io/sf/
Other
1.34k stars 298 forks source link

Which gdal features are needed by sf #408

Closed jeroen closed 7 years ago

jeroen commented 7 years ago

For the next version of gdal for windows it would be helpful to know which features of gdal are used and needed by sf. GDAL itself is pretty huge and some drivers have many dependencies. Carrying around large DLL's with thousands of symbols makes everything slow so I would prefer to only include external libraries which are needed.

It would be helpful if some users could help me point out which drivers are absolutely required / nice to have / not needed for R users. Below some output from ./configure --help.

The configuration for rwinlib/gdal2 version 2.1.1 can be found here.

Optional Packages:
  --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
  --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
  --without-cpp11         Disable C++11 compiler options
  --with-pic              try to use only PIC/non-PIC objects [default=use
                          both]
  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
  --with-sysroot=DIR Search for dependent libraries within DIR
                        (or the compiler's sysroot if not specified).
  --without-libtool     Don't use libtool to build the library
  --without-ld-shared   Disable shared library support
  --with-unix-stdio-64=ARG Utilize 64 stdio api (yes/no)
  --with-sse=ARG        Detect SSE availability for some optimized routines (ARG=yes(default), no)
  --with-ssse3=ARG        Detect SSSE3 availability for some optimized routines (ARG=yes(default), no)
  --with-avx=ARG        Detect AVX availability for some optimized routines (ARG=yes(default), no)
  --with-hide-internal-symbols=ARG Try to hide internal symbols (ARG=yes/no)
  --with-rename-internal-libtiff-symbols=ARG Prefix internal libtiff symbols with gdal_ (ARG=yes/no)
  --with-rename-internal-libgeotiff-symbols=ARG Prefix internal libgeotiff symbols with gdal_ (ARG=yes/no)
  --with-local=dir      Include /usr/local or other local tree for INCLUDE/LIBS
  --with-threads=ARG    Include thread safe support (ARG=yes(default), no or linkopt)
  --with-libz=ARG       Include libz support (ARG=internal or libz directory)
  --with-gnu-ld           assume the C compiler uses GNU ld default=no
  --with-libiconv-prefix[=DIR]  search for libiconv in DIR/include and DIR/lib
  --without-libiconv-prefix     don't search for libiconv in includedir and libdir
  --with-liblzma=ARG       Include liblzma support (ARG=yes/no)
  --with-pg=ARG           Include PostgreSQL GDAL/OGR Support (ARG=path to
                          pg_config)
  --with-grass=ARG      Include GRASS support (GRASS 5.7+, ARG=GRASS install tree dir)
  --with-libgrass=ARG   Include GRASS support based on libgrass (GRASS 5.0+)
  --with-cfitsio=ARG    Include FITS support (ARG=no or libcfitsio path)
  --with-pcraster=ARG   Include PCRaster (libcsf) support (ARG=internal, no or path)
  --with-png=ARG        Include PNG support (ARG=internal, no or path)
  --with-dds=ARG        Include DDS support (ARG=no, or path)
  --with-gta=ARG        Include GTA support (ARG=no or libgta tree prefix)
  --with-pcidsk=ARG     Path to external PCIDSK SDK or internal (default)
  --with-libtiff=ARG    Libtiff library to use (ARG=internal, yes or path)
  --with-geotiff=ARG    Libgeotiff library to use (ARG=internal, yes or path)
  --with-jpeg=ARG       Include JPEG support (ARG=internal, no or path)
  --without-jpeg12        Disable JPEG 8/12bit TIFF support
  --with-gif=ARG        Include GIF support (ARG=internal, no or path)
  --with-ogdi=ARG       Include OGDI support (ARG=path)
  --with-fme=ARG        Include FMEObjects support (ARG=FME_HOME path)
  --with-sosi=ARG        Include SOSI support (ARG=SOSI lib Path, yes or no)
  --with-mongocxx=ARG        Include MongoCXX support (ARG=Path, yes or no)
  --with-boost-lib-path=ARG   Path to boost libraries for mongocxx client
  --with-hdf4=ARG       Include HDF4 support (ARG=path)
  --with-hdf5=ARG       Include HDF5 support (ARG=path)
  --with-kea=ARG      Include kealib (ARG=path to kea-config) [default=yes]
  --with-netcdf=ARG     Include netCDF support (ARG=no or netCDF tree prefix)
  --with-jasper=ARG     Include JPEG-2000 support via JasPer library (ARG=path)
  --with-openjpeg=ARG     Include JPEG-2000 support via OpenJPEG 2.0 library (ARG=path)
  --with-fgdb=ARG        Include ESRI File Geodatabase support (ARG=FGDP API Path, yes or no)
  --with-ecw=ARG        Include ECW support (ARG=ECW SDK Path, yes or no)
  --with-kakadu=ARG     Include Kakadu/JPEG2000 support
  --with-mrsid=ARG      Include MrSID support (ARG=path to MrSID DSDK or no)
  --with-jp2mrsid=ARG   Enable MrSID JPEG2000 support (ARG=yes/no)
  --with-mrsid_lidar=ARG      Include MrSID/MG4 LiDAR support (ARG=path to LizardTech LiDAR SDK or no)
  --with-j2lura=ARG    Include JP2Lua support (ARG=no, lura SDK install path)
  --with-msg=ARG          Enable MSG driver (ARG=yes or no)
  --without-bsb           Disable BSB driver (legal issues pending
  --with-oci=[ARG]        use Oracle OCI API from given Oracle home
                          (ARG=path); use existing ORACLE_HOME (ARG=yes);
                          disable Oracle OCI support (ARG=no)
  --with-oci-include=[DIR]
                          use Oracle OCI API headers from given path
  --with-oci-lib=[DIR]    use Oracle OCI API libraries from given path
  --without-grib          Disable GRIB driver
  --with-gnm            Build GNM into shared library
  --with-mysql=ARG      Include MySQL (ARG=path to mysql_config) [default=no]
  --with-ingres=ARG     Include Ingres (ARG=$II_SYSTEM)
  --with-xerces=[ARG]     use Xerces C++ Parser from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-xerces-inc=[DIR] path to Xerces C++ Parser headers
  --with-xerces-lib=[ARG] link options for Xerces C++ Parser libraries
  --with-expat=[ARG]      use Expat XML Parser from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-expat-inc=[DIR]  path to Expat XML Parser headers
  --with-expat-lib=[ARG]  link options for Expat XML Parser libraries
  --with-libkml=[ARG]     use Google libkml from given prefix (ARG=path);
                          check standard prefixes (ARG=yes); disable (ARG=no)
  --with-libkml-inc=[DIR] path to Google libkml headers
  --with-libkml-lib=[ARG] link options for Google libkml libraries
  --with-odbc=ARG       Include ODBC support (ARG=no or path)
  --with-dods-root=ARG  Include DODS support (ARG=no or absolute path)
  --with-curl=ARG       Include curl (ARG=path to curl-config.)
  --with-xml2=ARG       Include libxml2 (ARG=path to xml2-config.)
  --with-spatialite=ARG Include SpatiaLite support (ARG=no(default), yes, dlopen (only supported for Spatialite >= 4.1.2) or path)
  --with-spatialite-soname=ARG Spatialite shared object name (e.g. libspatialite.so), only used if --with-spatiliate=dlopen
  --with-sqlite3=[ARG]    use SQLite 3 library [default=yes], optionally
                          specify the prefix for sqlite3 library
  --with-rasterlite2=ARG Include RasterLite2 support (ARG=no(default), yes or path)
  --with-pcre             Include libpcre support (REGEXP support for SQLite)
  --with-teigha=path Include Teigha DWG/DGN support
  --with-teigha-plt=platform Teigha platform
  --with-idb=DIR        Include Informix DataBlade support (DIR points to Informix root)
  --with-sde=DIR        Include ESRI SDE support (DIR is SDE's install dir).
  --with-sde-version=VERSION NUMBER  Set ESRI SDE version number (Default is 80).
  --with-epsilon=ARG    Include EPSILON support (ARG=no, yes or libepsilon install root path)
  --with-webp=ARG    Include WEBP support (ARG=no, yes or libwebp install root path)
  --with-geos=ARG         Include GEOS support (ARG=yes, no or geos-config
                          path)
  --with-sfcgal=ARG       Include SFCGAL support (ARG=yes, no or sfcgal-config
                          path)
  --with-qhull=ARG     Include QHull support (ARG=no, yes, internal)
  --with-opencl=ARG       Include OpenCL (GPU) support
  --with-opencl-include=ARG OpenCL Include directory (with a CL subdirectory)
  --with-opencl-lib=ARG   OpenCL Link Flags (i.e. -L/xxx -lOpenCL)
  --with-freexl=ARG    Include freexl support (ARG=no, yes (default) or libfreexl install path)
  --with-libjson-c=ARG       Include libjson-c support (ARG=internal or libjson-c directory)
  --without-pam         Disable PAM (.aux.xml) support
  --with-poppler=ARG    Include poppler(for PDF) support (ARG=no(default), yes or poppler install path)
  --with-podofo=ARG    Include podofo(for PDF) support (ARG=no(default), yes or podofo install path)
  --with-podofo-lib=ARG   podofo Link Flags (i.e. -L/xxx -lpodofo ...). Mainly for static libpodofo
  --with-podofo-extra-lib-for-test=ARG   Additional libraries to pass the detection test, but not used for libgdal linking (i.e. -ljpeg ...). Mainly for static lib                         podofo
  --with-pdfium=ARG    Include pdfium (for PDF) support (ARG=no(default), yes or pdfium install path)
  --with-pdfium-lib=ARG   pdfium Link Flags (i.e. -L/xxx -lpdfium ...). Mainly for static libpdfium
  --with-pdfium-extra-lib-for-test=ARG   Additional libraries to pass the detection test, but not used for libgdal linking (i.e. -ljpeg ...). Mainly for static lib                         pdfium
  --with-static-proj4=ARG Compile with PROJ.4 statically (ARG=no or path)
  --with-gdal-ver=ARG   Override GDAL version
  --with-macosx-framework         Build and install GDAL as a Mac OS X Framework
  --with-perl           Enable perl bindings
  --with-php            Enable php bindings
  --with-python=ARG   Enable python bindings (ARG=yes, no, or path to python binary)
  --with-java       Include Java support (ARG=yes, no or JDK home path)  [default=no]
  --with-mdb       Include MDB driver
  --with-jvm-lib=ARG        ARG is dlopen or points to Java libjvm path
  --with-jvm-lib-add-rpath    Add the libjvm path to the RPATH (no by default)
  --with-rasdaman=DIR        Include rasdaman support (DIR is rasdaman's install dir).
  --with-armadillo=ARG       Include Armadillo support for faster TPS transform computation (ARG=yes/no/path to armadillo install root) [default=no]
  --with-cryptopp=ARG       Include cryptopp support (ARG=yes, no or path)
  --without-mrf           Disable MRF driver
mpadge commented 7 years ago

Wanna set up a temporary sfr wiki page to collate votes on your three categories via simple counters? You'd likely get much more informative feedback than endless verbal debates within this very important issue.

edzer commented 7 years ago

I moved this discussion to https://github.com/r-spatial/discuss/issues/14