Git Product home page Git Product logo

cim-spec's Introduction

Cartographic Information Model

This repository hosts the specification for the Cartographic Information Model (CIM) which is a map content specification used to persist and transfer cartographic descriptions of GIS datasets. Represented in JSON, the specification is used for maps, scenes, layouts, layers, symbols, and styles in ArcGIS applications and APIs.

Usage of the CIM primarily begins with an entry point through a primary object. These objects are:

  • Layer files: CIMLayerDocument: A JSON document containing one of more layers representing data such as features from a feature class or raster.
  • Map files: CIMMapDocument: A JSON document containing a collection of layers and display properties for 2D maps or 3D scenes. Maps and scenes in the CIM are represented by the CIMMap object. There are not separate object types and maps and scenes are instead differentiated by the mapType property. Types of scenes, global and local, are differentiated by the defaultViewingMode property.
  • Layout files: CIMLayoutDocument : A JSON document with a representation of a page (CIMLayout), its elements, and the maps and scenes on it for print of document export.
  • Report files: CIMReportDocument: A JSON document representing a report (CIMReport), its elements, and the report specific
  • Styles : A database with style items defining graphic objects like colors, colors schemes, and symbols used to draw a feature or layout graphic. These items are used in the definitions of layers, maps, scenes, and layouts but may also be stored on their own as items in styles where the JSON is written to a database field. See also An overview of symbols in the CIM.

How this specification is formatted

This CIM specification is documented via Markdown documents that contain definitions for objects and their properties. JSON lacks an inheritance mechanism and CIM implementations often deal with many abstract types using inheritance. Additionally, JSON has one numeric type, but typed languages typically differentiate various integer and floating-point types. The formatting of the Markdown reflects these realities in the following ways:

  1. Objects that can be thought of inheriting from a type list properties in a section for each inherited type. In some cases, the final type may inherit all properties from another type and have no unique properties for itself. See CIMRGBColor for an example.
  2. The Types document lists objects by their type for quick reference.
  3. Numeric types are specified as short, long, long long, float, and double corresponding to 16-bit integer, 32-bit integer, 64-bit integer, single-precision floating-point, and double-precision floating-point types respectively.
  4. Types specified as any may be any basic JSON type: string, number, boolean, or null.

Versioning

The Cartographic Information Model uses Semantic Versioning and this documentation corresponds to version 2.9.0.

Licensing

See License

Contributing

You are invited to fork this repository to a public or private repository and to send Pull Requests suggest improvements or notify us of errors or omissions in this documentation. Creating a fork solely for this purpose does not constitute the creation and distribution of a derivative work. Please see our guidelines for contributing.

cim-spec's People

Contributors

bishrant avatar epunt avatar joalvarez avatar siva-e avatar williamscraigm avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.