I am writing a GIS app that allows import of various file formats, and I want to include an importer for data coming out of ArcGIS. My understanding was that Geodatabase was the default format for sharing ArcGIS data, and I am familiar with the C++ SDK API they provide for reading Geodatabase.

I asked this question:

Does Esri Geodatabase contain style information?

and learned that a Geodatabase itself does not contain styling information.

But if Geodatabase doesn't contain style info, it made me wonder how ArcMap users share data with each other when they want to include styling information.

I learned that styling information for an Esri map can be found (along with the geometry data) in a Layer Package or a Map Package.

So I am now trying to understand if there is a documented way for me to read the style information from a Layer Package or Map Package. But even if there were, I don't know if there is a way for me (as an app external to ArcMap) to read the geometry out of a Layer Package or Map Package. (I don't know, for instance, if Layer and Map packages include a Geodatabase as a subset of their data, and I could read that Geodatabase using the API SDK.)

  • The answer is still No. This is especially true with respect to the File Geodatabase API. – Vince Nov 17 '16 at 4:06
  • Okay, so bottom line is I can tell my boss: "There is no standard / documented way for me to add a feature to our program to import features from ArcGIS that includes styling information. Our users will have to import just the geometry (which we will access from a Geodatabase using the API), and any styling information they will have to add themselves manually from within our program." Does that sound correct? (I'm fine if it is, it's just surprising to me and I don't want to miss out on providing our users a convenience I could have provided.) – M Katz Nov 17 '16 at 4:12

My understanding is that Layer (*.lpk) and Map (*.mpk) packages can include a Geodatabase as a subset of their data which you can see by renaming it as a *.zip.

I think that you should then be able to read any parts of that Geodatabase supported by the File Geodatabase API.

To read the style information in a Layer (*.lyr) file or Map (*.mxd) document my understanding is that you will need ArcObjects (which is how ArcMap reads them).

  • Okay, thanks, that is very helpful. Now my question (which I'm not asking!) is whether it's common to see *.lpk and *.mpk files "out in the wild". My understanding was that Geodatabase files were becoming standard and ubiquitous, but maybe people generally provide .lpk and .mpk files when they want to include styling. So it sounds like my program may have to support reading the geometry via the SDK, but also read the styles using ArcObjects, which I will now read about... – M Katz Nov 17 '16 at 4:19
  • 1
    I often see people using *.lpk and *.mpk files to move data with their layer properties (that include styling) around but they are not as commonly seen as file geodatabases to move just the data (sometimes with accompanying *.lyr and *.mxd files). – PolyGeo Nov 17 '16 at 4:25
  • Thanks. Well, it sounds like using the ArcObjects API isn't an option for me as an app that will be running on machines without Arc installed. So I'll stick with importing Geodatabase for now. – M Katz Nov 17 '16 at 5:16

Styles exist independently of map documents, so they are not included in layers or map packages directly. You can think of a style as a library of symbols, line types, and other data. They can be referenced in a map document: http://desktop.arcgis.com/en/arcmap/latest/map/styles-and-symbols/referencing-styles-in-a-map-document.htm Layer symbology can be set inside the properties of the feature class, or applied externally: http://desktop.arcgis.com/en/arcmap/latest/analyze/modelbuilder/creating-a-layer-symbology-file.htm

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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