2

I've been given a data extract that appears to be from an ESRI server, and I think is meant to be map tiles (e.g. from a tile cache server).

I don't know enough about ESRI products to identify which one it comes from, and the timing (summer break in this hemisphere) is bad for asking the originator.

The directory structure looks like this:

 ├── _alllayers
     ├── L00
     │   ├── R0000C0000.bundle
     │   └── R0000C0000.bundlx

  ... More "Lnn" directories here, down to L14, with more files in lower levels

 ├── conf.cdi
 ├── Conf.xml
 └── Status.gdb
    ├── a00000001.gdbindexes
    ├── a00000001.gdbtable
    ├── a00000001.gdbtablx
    ├── a00000001.TablesByName.atx
    ├── a00000002.gdbtable
    ├── a00000002.gdbtablx
    ├── a00000003.gdbindexes
    ├── a00000003.gdbtable
    ├── a00000003.gdbtablx
    ├── a00000004.CatItemsByPhysicalName.atx
    ├── a00000004.CatItemsByType.atx
    ├── a00000004.FDO_UUID.atx
    ├── a00000004.gdbindexes
    ├── a00000004.gdbtable
    ├── a00000004.gdbtablx
    ├── a00000004.spx
    ├── a00000005.CatItemTypesByName.atx
    ├── a00000005.CatItemTypesByParentTypeID.atx
    ├── a00000005.CatItemTypesByUUID.atx
    ├── a00000005.gdbindexes
    ├── a00000005.gdbtable
    ├── a00000005.gdbtablx
    ├── a00000006.CatRelsByDestinationID.atx
    ├── a00000006.CatRelsByOriginID.atx
    ├── a00000006.CatRelsByType.atx
    ├── a00000006.FDO_UUID.atx
    ├── a00000006.gdbindexes
    ├── a00000006.gdbtable
    ├── a00000006.gdbtablx
    ├── a00000007.CatRelTypesByBackwardLabel.atx
    ├── a00000007.CatRelTypesByDestItemTypeID.atx
    ├── a00000007.CatRelTypesByForwardLabel.atx
    ├── a00000007.CatRelTypesByName.atx
    ├── a00000007.CatRelTypesByOriginItemTypeID.atx
    ├── a00000007.CatRelTypesByUUID.atx
    ├── a00000007.gdbindexes
    ├── a00000007.gdbtable
    ├── a00000007.gdbtablx
    ├── a00000009.gdbindexes
    ├── a00000009.gdbtable
    ├── a00000009.gdbtablx
    ├── a00000009.spx
    ├── a0000000a.gdbindexes
    ├── a0000000a.gdbtable
    ├── a0000000a.gdbtablx
    ├── a0000000a.spx
    ├── a0000000b.gdbindexes
    ├── a0000000b.gdbtable
    ├── a0000000b.gdbtablx
    ├── a0000000b.spx
    ├── a0000000c.bundleNameIndex.atx
    ├── a0000000c.gdbindexes
    ├── a0000000c.gdbtable
    ├── a0000000c.gdbtablx
    ├── a0000000c.jobIDIndex.atx
    ├── a0000000c.scaleIndex.atx
    ├── a0000000c.spx
    ├── gdb
    └── timestamps

I'd like to be able to serve this data up in a TMS or (less preferred) WMTS format. Failing those two, WMS would also be OK.

Is there an open-source server that can take this format and serve it up directly? If not, is there an open source conversion tool that can convert it into a "normal" format (mbtiles, geopackage, or an on-disk directory structure) that can then be ingested into an open-source server?

I've tried pointing gdalinfo at some of the more likely looking files, but it resulted in gdalinfo failed - unable to open messages.

1
  • 1
    You can serve a cache from ArcGIS Server, but it isn't a raster format, per se. The existence of the FGDB is probably confusing the issue -- It only contains the footprints of the tiles which have been built, and isn't really of much use without the rest of the service data. The actual tile images are stored in the .bundle files, but I'm not aware of any way to extract it, other than as an ArcGIS for Server map service.
    – Vince
    Commented Dec 27, 2015 at 5:22

2 Answers 2

1

I don't think you will have much luck with this because according to Reading raster datasets from file geodatabase with FME?:

Currently, the Esri FGDB API does NOT support rasters.

I am not certain but, from the *.Cat* file names in your file geodatabase folder, I think what you have is a Raster Catalog. These can be created using ArcGIS for Desktop.

1
  • It's unlikely that geodatabase contains rasters. A map service cache contains footprints of the tiles which have been produced, which aids in extending the cache dynamically upon request. The index names reflect the columns being indexed, which supports the footprint catalog idea.
    – Vince
    Commented Dec 27, 2015 at 17:30
0

So it turns out that there is an open source option - GeoWebCache.

However some caveats:

  • It doesn't look like there is a way to do this with the GeoServer embedded version, so you need a standalone instance.
  • The documentation says that it isn't possible.
  • I couldn't make it work with the "alternative approach" (i.e. setting <tileCachePath> appears to break it) - possibly the wrong path though.
  • It is possibly necessary to set GEOWEBCACHE_CACHE_DIR to something other than on /tmp.

So install GeoWebCache on your favourite application server (I used tomcat7, as packaged for Ubuntu 14.04).

Check it works (http://localhost:8080/geowebcache or as appropriate).

Set GEOWEBCACHE_CACHE_DIR to be safe, by editing the geowebcache/WEB-INF\web.xml configuration file to add:

  <context-param>
    <param-name>GEOWEBCACHE_CACHE_DIR</param-name>
    <param-value>{whatever you like here}</param-value>
  </context-param> 

Restart tomcat to make sure you get a new geowebcache.xml configuration file (in whichever directory you set GEOWEBCACHE_CACHE_DIR to point to).

Check it still works (again).

Edit geowebcache.xml to add an appropriate entry, like:

<arcgisLayer>
  <name>YourLayername</name>
  <tilingScheme>/path/to/your/Conf.xml</tilingScheme>
</arcgisLayer>

I've submitted a pull request to update the docs, so hopefully this will be less confusing next time.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.