I found that adding the prj file fixed this problem thanks to this python 
script written by Mersey Viking found below.

My question then is why does geoserver need this file for some tifs and not for 
others?  Is there something about the header that is preventing geoserver from 
parsing the projection data?  If so why not add these osgeo methods to the 
geoserver package?


# Written by MerseyViking (mersey dot viking at gmail dot com), 2011.

# Released into the public domain - May 8, 2011

# I accept no responsibility for any errors or loss of data, revenue, or life 
this script may cause. Use at your own risk.



import osgeo.gdal as gdal

import osgeo.osr as osr

import os

import glob

import sys



def generate_tfw(path, gen_prj):

    for infile in glob.glob(os.path.join(path, '*.tif')):

        src = gdal.Open(infile)

        xform = src.GetGeoTransform()



        if gen_prj == 'prj':

            src_srs = osr.SpatialReference()

            src_srs.ImportFromWkt(src.GetProjection())

            src_srs.MorphToESRI()

            src_wkt = src_srs.ExportToWkt()



            prj = open(os.path.splitext(infile)[0] + '.prj', 'wt')

            prj.write(src_wkt)

            prj.close()

            src = None

           edit1=xform[0]+xform[1]/2

           edit2=xform[3]+xform[5]/2



           tfw = open(os.path.splitext(infile)[0] + '.tfw', 'wt')

           tfw.write("%0.8f\n" % xform[1])

           tfw.write("%0.8f\n" % xform[2])

           tfw.write("%0.8f\n" % xform[4])

           tfw.write("%0.8f\n" % xform[5])

           tfw.write("%0.8f\n" % edit1)

           tfw.write("%0.8f\n" % edit2)

           tfw.close()



if __name__ == '__main__':

    generate_tfw(sys.argv[1], sys.argv[2])


From: Marks, Constant
Sent: Thursday, August 15, 2019 2:03 PM
To: geoserver-users@lists.sourceforge.net
Subject: Re: [Geoserver-users] Failed to Add Raster Data Source

Hello all.   This may have come up before but I did not see a solution.  Thank 
in advance for your help!

I am struggling to add a GeoTiff raster file to Geoserver. After some 
transformations and adding color to the original GeoTiff (which would also not 
load) here are the details:

PERMISSIONS:
$ ls outputv2.tif -la
-rw-rw-rw- 1 nvidia nvidia 207210997 Aug 15 13:46 outputv2.tif

GDALINFO:
$ gdalinfo outputv2.tif
Driver: GTiff/GeoTIFF
Files: outputv2.tif
Size is 32410, 21019
Coordinate System is:
PROJCRS["WGS 84 / Pseudo-Mercator",
    BASEGEOGCRS["WGS 84",
        DATUM["World Geodetic System 1984",
            ELLIPSOID["WGS 84",6378137,298.257223563,
                LENGTHUNIT["metre",1]]],
        PRIMEM["Greenwich",0,
            ANGLEUNIT["degree",0.0174532925199433]],
        ID["EPSG",4326]],
    CONVERSION["Popular Visualisation Pseudo-Mercator",
        METHOD["Popular Visualisation Pseudo Mercator",
            ID["EPSG",1024]],
        PARAMETER["Latitude of natural origin",0,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8801]],
        PARAMETER["Longitude of natural origin",0,
            ANGLEUNIT["degree",0.0174532925199433],
            ID["EPSG",8802]],
        PARAMETER["False easting",0,
            LENGTHUNIT["metre",1],
            ID["EPSG",8806]],
        PARAMETER["False northing",0,
            LENGTHUNIT["metre",1],
            ID["EPSG",8807]]],
    CS[Cartesian,2],
        AXIS["easting (X)",east,
            ORDER[1],
            LENGTHUNIT["metre",1]],
        AXIS["northing (Y)",north,
            ORDER[2],
            LENGTHUNIT["metre",1]],
    USAGE[
        SCOPE["unknown"],
        AREA["World - 85°S to 85°N"],
        BBOX[-85.06,-180,85.06,180]],
    ID["EPSG",3857]]
Data axis to CRS axis mapping: 1,2
Origin = (-20037507.987483192235231,18434491.525901496410370)
Pixel Size = (1236.473576745130231,-1236.511728912020544)
Metadata:
  AREA_OR_POINT=Area
Image Structure Metadata:
  COMPRESSION=PACKBITS
  INTERLEAVE=PIXEL
Corner Coordinates:
Upper Left  (-20037507.987,18434491.526) (179d59'59.99"W, 83d38'22.73"N)
Lower Left  (-20037507.987,-7555748.504) (179d59'59.99"W, 55d59'11.76"S)
Upper Right (20036600.635,18434491.526) (179d59'30.65"E, 83d38'22.73"N)
Lower Right (20036600.635,-7555748.504) (179d59'30.65"E, 55d59'11.76"S)
Center      (    -453.676, 5439371.511) (  0d 0'14.67"W, 43d49'52.66"N)
Band 1 Block=256x256 Type=Byte, ColorInterp=Red
  Mask Flags: PER_DATASET ALPHA
Band 2 Block=256x256 Type=Byte, ColorInterp=Green
  Mask Flags: PER_DATASET ALPHA
Band 3 Block=256x256 Type=Byte, ColorInterp=Blue
  Mask Flags: PER_DATASET ALPHA
Band 4 Block=256x256 Type=Byte, ColorInterp=Alpha

GEOSERVER ERROR LOG:
Caused by: java.io.IOException: Failed to create reader from 
file:///home/nvidia/Projects/onr/map_layers/GHS_SMOD_POP2015_GLOBE_R2016A_54009_1k_v1_0/outputv2.tif
 and hints Hints:
  REPOSITORY       = 
org.geoserver.catalog.CatalogRepository@2c66076d<mailto:org.geoserver.catalog.CatalogRepository@2c66076d>
  EXECUTOR_SERVICE = 
java.util.concurrent.ThreadPoolExecutor@61c35bab[Running<mailto:java.util.concurrent.ThreadPoolExecutor@61c35bab[Running>,
 pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
System defaults:
  FORCE_LONGITUDE_FIRST_AXIS_ORDER = true
  FILTER_FACTORY                   = FilterFactoryImpl
  FORCE_AXIS_ORDER_HONORING        = http
  LENIENT_DATUM_SHIFT              = true
  FEATURE_FACTORY                  = 
org.geotools.feature.LenientFeatureFactoryImpl@66e8997c<mailto:org.geotools.feature.LenientFeatureFactoryImpl@66e8997c>
  STYLE_FACTORY                    = StyleFactoryImpl
  COMPARISON_TOLERANCE             = 1.0E-8
  GRID_COVERAGE_FACTORY            = GridCoverageFactory
    TILE_ENCODING                  = null

               at 
org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1492)
               at 
org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1436)
               at 
org.geoserver.catalog.impl.CoverageStoreInfoImpl.getGridCoverageReader(CoverageStoreInfoImpl.java:53)
               at 
jdk.internal.reflect.GeneratedMethodAccessor426.invoke(Unknown Source)
               at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
               at java.base/java.lang.reflect.Method.invoke(Method.java:566)
               at 
org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:127)
               at com.sun.proxy.$Proxy35.getGridCoverageReader(Unknown Source)
               at 
org.geoserver.web.data.layer.NewLayerPageProvider.getItemsInternal(NewLayerPageProvider.java:86)
               ... 140 more
Constant Marks
Research Assistant | Computer Science and Engineering
University of North Texas
Office: Discovery Parks F216
e: constant.ma...@unt.edu<mailto:constant.ma...@unt.edu>
t: (303) 482 7292<tel:482%207292>

_______________________________________________
Geoserver-users mailing list

Please make sure you read the following two resources before posting to this 
list:
- Earning your support instead of buying it, but Ian Turton: 
http://www.ianturton.com/talks/foss4g.html#/
- The GeoServer user list posting guidelines: 
http://geoserver.org/comm/userlist-guidelines.html

If you want to request a feature or an improvement, also see this: 
https://github.com/geoserver/geoserver/wiki/Successfully-requesting-and-integrating-new-features-and-improvements-in-GeoServer


Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to