[OpenLayers-Users] ArcGIS Online Cached tiles datum shift

christopher.schmidt at nokia.com christopher.schmidt at nokia.com
Thu Jul 22 14:38:29 EDT 2010


On Jul 22, 2010, at 2:33 PM, ext Vadim Bokin wrote:

> Is there any way to make this work with the /rest/... URL?
> 
> I took the code you (Robert) provided from ArcGISCache and changed how
> it was generating the URL.  not calculating, that is left in place,
> but generating - and I just removed all the "L" and "R" prefixing, and
> padding with 0's and so on.  And made that work with the /tile/z/x/y
> scheme, but tiles are still mis-aligned.
> 
> Do you know of any efforts to make ArcGIS tile/cached services work on
> top of XYZ.js with the /rest/... URL.

http://trac.openlayers.org/ticket/2741

-- Chris

> Thank you,
> 
> -Vadim
> 
> On Tue, Jul 20, 2010 at 1:45 PM, Robert Sanson
> <Robert.Sanson at asurequality.com> wrote:
>> ArcGIS Server can create tile caches, similar to what Google maps creates
>> and uses. These are 256x256 pixel tiles laid out in a grid fashion which are
>> pre-rendered at various scales. They can be accessed either via the ArcGIS
>> Server REST API - requests take the form:
>> 
>> 
>> 
>> http://<map service  URL>/tile/<level>/<row>/<column>
>> 
>> 
>> 
>> eg.:
>> 
>> 
>> 
>> http://ws-esrimt/ArcGIS/rest/services/mapservice_topography_vector_prod/MapServer/tile/0/17/7
>> 
>> 
>> 
>> or via a direct URL call against the virtual cache on the Web server eg.:
>> 
>> 
>> 
>> http://ws-esrimt/MapCache/mapservice_topography_vector_prod/Layers/_alllayers/L00/R00000011/C00000007.png
>> 
>> 
>> 
>> The former requires ArcGIS Server, as requests are handled through the REST
>> API and may result in some interpolation. The latter is faster as it
>> requests the tile directly from the Web server.
>> 
>> 
>> 
>> The tileOrigin for ArcGIS Server caches is the upper left corner, with
>> increasing row and column numbers moving down and to the right. This differs
>> from some other commercial and free tile caches, which usually have their
>> origin to the lower left. The virtual cache directory structure uses zero
>> padded hexadecimal numbers for the row and column numbers.
>> 
>> 
>> 
>> OpenLayers can request tiles using either mechanism, but the virtual cache
>> format is the fastest (and produces the sharpest images). According to
>> ESRI's own Web site:
>> 
>> 
>> 
>> http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_java_help/index.html#/Map_cache_usage_by_clients/009200000t1n000000/
>> 
>> "After an initial connection to the GIS server, the Web ADF retrieves tiles
>> directly from the virtual cache directory. This is the fastest way for the
>> application to get the tiles. Tiles can only be retrieved this way for
>> caches stored in the exploded format."
>> 
>> 
>> 
>> To access these virtual caches, OpenLayers requires ArcGISCache.js and a
>> patched XYZ.js file to tell OpenLayers to calculate the grid layout from the
>> upper left rather than the bottom left.
>> 
>> 
>> 
>> The scale ranges are specified when the map object is created:
>> 
>> 
>> 
>> var mapoptions = {
>> 
>>                 maxExtent: new OpenLayers.Bounds(-4020900, 4554869.11353823,
>> 2568710.79993, 19998100),
>> 
>>                 restrictedExtent: new
>> OpenLayers.Bounds(980902.6296,4672753.201,2606505.881,6298356.452),
>> 
>>                 //scales: [12000000, 3000000, 1000000, 750000, 500000,
>> 250000, 100000, 75000, 50000, 35000, 25000, 20000, 15000, 10000, 7500,
>> 5000],
>> 
>>                 resolutions: new Array(3175.0063500127003, //0
>> 
>>                                      793.75158750317507, //1
>> 
>>                                      264.58386250105838, //2
>> 
>>                                      198.43789687579377, //3
>> 
>>                                      132.29193125052919, //4
>> 
>>                                      66.145965625264594, //5
>> 
>>                                      26.458386250105836, //6
>> 
>>                                      19.843789687579378, //7
>> 
>>                                      13.229193125052918, //8
>> 
>>                                      9.260435187537043, //9
>> 
>>                                      6.6145965625264589, //10
>> 
>>                                      5.2916772500211673, //11
>> 
>>                                      3.9687579375158752, //12
>> 
>>                                      2.6458386250105836, //13
>> 
>>                                      1.9843789687579376, //14
>> 
>>                                      1.3229193125052918),//15
>> 
>>                 tileSize: new OpenLayers.Size(256,256),
>> 
>>                 units: 'm',
>> 
>>                 projection: new OpenLayers.Projection('EPSG:2193'),
>> 
>>                 fractionalZoom: false
>> 
>>                 };
>> 
>> var map = new OpenLayers.Map( 'map',mapoptions );
>> 
>> 
>> 
>> A cached map layer is then specified as follows:
>> 
>> 
>> 
>> var topoagc = new OpenLayers.Layer.ArcGISCache({
>> 
>>                           name: "agscache",
>> 
>>                           url:
>> "http://ws-esrimt/MapCache/mapservice_topography_vector_prod/Layers/_alllayers/",
>> 
>>                           tileOrigin: new
>> OpenLayers.LonLat(-4020900,19998100)
>> 
>>                 });
>> 
>> map.addLayer(topoagc);
>> 
>> 
>> regards,
>> 
>> Robert Sanson
>> 
>>>>> Vadim Bokin <vbokin at gmail.com> 20/07/2010 6:20 p.m. >>>
>> Ok, now I'm confused.  How do I initialize the ArcGISCache layer with
>> this service
>> 
>> http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer
>> 
>> ??
>> 
>> Previously I was going after
>> 
>> http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer
>> + "/tile/" + "${z}/${y}/${x}"  tiles.
>> 
>> This goes after completely different scheme of tiles.
>> 
>> 
>> 
>> This message has been scanned for malware by SurfControl plc.
>> www.surfcontrol.com
> _______________________________________________
> Users mailing list
> Users at openlayers.org
> http://openlayers.org/mailman/listinfo/users




More information about the Users mailing list