[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