I have created a custom State Plane basemap for use in Collector (to collect in SP coordinates)
The basemap has 9 levels of detail, and around 500MB of tiles. When I published this to our federated server site, I used the option to have the server handle the tile caching automatically. I do not know if this is best process or not.
There aren't too many layers in the basemap that change much (other than streets) and I am unsure how to handle the re-caching. Does the server re-cache when the map service gets recycled every night? Or are there some tools I could run via Python or Geoprocessing tab in ArcMap/ArcPro to ensure the cache on this service does not grow stale.
Thanks for any help!
So what I do is this: each week I overwrite the feature classes in my filegdb that support the map. Now the data in the map is overwritten but the cache tiles are not. They have to be re-created. Using the Pro Idle, here's how that looks:
# List of input variables for map service properties portal = arcpy.SignInToPortal("https://yourportal", "yourname", "yourpw") env.workspace = r"\\yourserver\.....\\DataConnections\\SqlProdSp.gdb" # must be registered location try: input_service = "https://......yourCacheService/MapServer" scales = [577790.554289,288895.277144,144447.638572,72223.819286,36111.909643] #0,1,2,3,4,5,6,7 full ext #scales = [9027.977411,4513.988705,2256.994353,1128.497176,564.248588] # mid ext #scales = [282.124294] #8,9,10,11,12,13] #,14,15 tilemapped # low ext update_mode = "RECREATE_ALL_TILES" # DELETE_TILES update_extent = "412741.7365287468 915208.8897668198 672826.0004799105 1141077.7300229892" #"XMin, YMin, XMax, YMax" stateplane #update_extent = "-9200240.24964 3116183.75439 -9132965.67576 3172857.76957" #"XMin, YMin, XMax, YMax" webmercator num_of_caching_service_instances = "-1" #14 don't need in pro print (scales) area_of_interest = "" wait_for_job_completion = "WAIT" portal_url = "https://yourportal" result = arcpy.ManageMapServerCacheTiles_server(input_service, scales, update_mode, num_of_caching_service_instances, area_of_interest, update_extent, wait_for_job_completion,portal_url) print ("Created cache tiles for scale = " + str(scales) + " and service at " + input_service + " using the full extent") message = message + "Created cache tiles for scales = " + str(scales) + " " + input_service + " using the full extent" except Exception: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info() e = sys.exc_info() #print(e.args) #print "Line %i" % tb.tb_lineno message = message + "\n" + "Line %i" % tb.tb_lineno message = message + "\n" + e.message
What I have done is set up the cache tiling scheme to use the same levels as the web mercator tile scheme, because it works so well in the field, but I can still use stateplane coord system. The cache levels in the service go all the way down to 1:70, but I only cache to 1:564 and then use the 'tilemap' capability on the service so that the service 'maps tiles' down to the lowest level. The 'full ext' scale array above takes like 1 minute. The 'mid ext' scale array takes about 50 minutes on our system. I run this as 2 scripts in a scheduled task.
Great help David, Thanks!
I have gotten in the habit of using Pro for just about everything now. It's just so much easier that way.