In ArcGIS Server 10, we publish several individual locators (postal code, road, parcel) but also published a composite locator which included all the individually published locators. Since the composite locator was just a pointer to the other locators it published just fine.
In 10.2.2 though the publishing process is very different. For all our services we are creating service definition files (.sd) to publish from. One of the options when creating the .sd file is to Include data in service definition when publishing. Since we are publishing the individual locators already, it is a waste of resources to publish the same locator data a second time so I have been trying to create the .sd file without including the data.
When I go to publish the service though, it fails with an error 001487 - saying it can't update the server-side data location. I have created a data store that matches up the publisher directory with the server directory - this works fine for creating the individual locators without including their data in the .sd file. The problem seems to be that Server can't figure out that the data for the individual locators has already been uploaded and installed correctly.
Is it not possible to create composite locators in the way we did in 10 - simply pointing the composite at existing individual locators? Is it just a matter of adding an additional data store configuration? I would rather not have to run multiple copies of the exact same locator, just to be able to include them in a composite locator.
Any help would be greatly appreciated.
Have you tried publishing direct from the Composite locator instead of using a service definition file to publish?
If so and it still does not work, how are you adding your data connections in your locators? Is it UNC, SDE connections, or mapped drives.... check your locator data stores and make sure that one of the data stores is not referencing a mapped drive that the server does not recognize.
Yes, I tried publishing directly from arcCatalog (right-click, share as, etc.) but when you publish that way, you don't have an option to include the data or not. It always includes the data in the .sd file when you do it that way.
The locators themselves (the individual locators) are generated from layers in a file geodatabase in a subdirectory of the one where the locator was created (eg. /locator_dir/fgdb_dir). This should be irrelevant after the locator is created though, since all the data is indexed in the .lox file anyways.
For the composite locators, the paths stored in the .loc file appear to be relative local paths to the individual locators (path = .). I am trying to publish directly from the server, so the paths are all valid. I did create a /published subfolder to put a copy of the locators in, and mapped this directory to my datastore in ArcGIS Server Manager (the mapping is publisher location d:\locators = server location d:\locators\published). I also created a datastore mapping for d:\locators as the publisher and server directory.
For the composite locators, I now have a copy of the individual locators both in the root directory (D:\locators) as well as the published directory (D:\locators\published), so I'm not sure why it can't map the individual locators.
The composite locator you are going to publish will be copied to the server.
Do nothing. The composite locator must be copied to the server.
If the participating locators are stored in a folder or geodatabase that is registered as a store, only the composite locator, not the participating locators, will be copied to the server.
To learn more about managing service data in a server, see Copying data to the server automatically when publishing and Making your data accessible to ArcGIS Server.
This is an ArcGIS 10.1 help document, so it looks like the composite locator must be copied to the server, but it is just a pointer to the other locators so it is really not a heavy load. There were a ton of changes between 10.0 to 10.1 just in the framework of how services are setup and the publishing process.
It's still not working quite the way I'd like it to (or think it should) but I have found a working solution.
To recap, the individual locators will publish fine from an .sd file without including the data. We manually copy the locator files to the server publishing directory and we have a datastore configured that translates the publisher path (d:\locators) to the server path (d:\locators\published).
With the composite locator though, the only way I was able to get it to publish successfully and reference the existing individual locators, was to create a datastore for the publishing directory (D:\locators\published) and check the box for the server folder path to be the same as the publisher path. I copied the composite locator into the publishing directory (D:\locators\published) and was then able to successfully publish either directly using the locator or by first creating a service definition file (.sd) and then publishing it as a service.
It seems that ArcGIS server is getting confused about the path name translations of the individual locators when you try to publish it to a directory path other than where it is currently located. Perhaps this has something to do with the fact that the in the composite locator's .loc file, it references the location of the participating locators as "." instead of using a full path like "D:\locators"?