Skip to content

Geographic structure placements (molen/structure-placements@1) ​

WGS84 anchors for authored models; draft entries are indexed but not rendered.

Example ​

json
{
  "format": "molen/structure-placements@1",
  "title": "Example structures",
  "entries": [
    {
      "id": "sample.tower",
      "title": "Sample tower",
      "asset": "sample.structure.tower",
      "anchor": [
        -122.3493,
        47.62051
      ],
      "status": "draft",
      "source": "https://example.com/tower"
    }
  ]
}

JSON Schema ​

json
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "format": {
      "type": "string",
      "const": "molen/structure-placements@1"
    },
    "title": {
      "type": "string",
      "minLength": 1
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9.-]*$"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "asset": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_.-]*$"
          },
          "anchor": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              }
            ],
            "items": false,
            "minItems": 2,
            "maxItems": 2
          },
          "heading": {
            "type": "number"
          },
          "scale": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "number",
                "exclusiveMinimum": 0
              }
            ],
            "items": false,
            "minItems": 3,
            "maxItems": 3
          },
          "datum": {
            "type": "string",
            "enum": [
              "terrain",
              "sea-level"
            ]
          },
          "elevation": {
            "type": "number"
          },
          "terrainReference": {
            "type": "object",
            "properties": {
              "anchor": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "number",
                    "minimum": -180,
                    "maximum": 180
                  },
                  {
                    "type": "number",
                    "minimum": -90,
                    "maximum": 90
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2
              },
              "modelHeight": {
                "type": "number"
              },
              "basis": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "anchor",
              "modelHeight",
              "basis"
            ],
            "additionalProperties": false
          },
          "bounds": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              },
              {
                "type": "number",
                "minimum": -180,
                "maximum": 180
              },
              {
                "type": "number",
                "minimum": -90,
                "maximum": 90
              }
            ],
            "items": false,
            "minItems": 4,
            "maxItems": 4
          },
          "replaceRoads": {
            "type": "object",
            "properties": {
              "length": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "width": {
                "type": "number",
                "exclusiveMinimum": 0
              },
              "outline": {
                "minItems": 3,
                "maxItems": 512,
                "type": "array",
                "items": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "number"
                    }
                  ],
                  "items": false,
                  "minItems": 2,
                  "maxItems": 2
                }
              },
              "deckHeight": {
                "type": "number"
              },
              "deckHeights": {
                "type": "array",
                "prefixItems": [
                  {
                    "type": "number"
                  },
                  {
                    "type": "number"
                  }
                ],
                "items": false,
                "minItems": 2,
                "maxItems": 2
              },
              "includeConnectedApproaches": {
                "type": "boolean"
              }
            },
            "required": [
              "length",
              "width"
            ],
            "additionalProperties": false
          },
          "replaceFootprint": {
            "type": "boolean"
          },
          "groundCutout": {
            "type": "object",
            "properties": {
              "outline": {
                "minItems": 3,
                "maxItems": 512,
                "type": "array",
                "items": {
                  "type": "array",
                  "prefixItems": [
                    {
                      "type": "number"
                    },
                    {
                      "type": "number"
                    }
                  ],
                  "items": false,
                  "minItems": 2,
                  "maxItems": 2
                }
              },
              "basis": {
                "type": "string",
                "minLength": 1
              }
            },
            "required": [
              "outline",
              "basis"
            ],
            "additionalProperties": false
          },
          "mapIdentity": {
            "type": "object",
            "properties": {
              "wikidata": {
                "type": "string",
                "pattern": "^Q[1-9][0-9]*$"
              },
              "names": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "maxDistance": {
                "type": "number",
                "exclusiveMinimum": 0,
                "maximum": 10000
              }
            },
            "additionalProperties": false
          },
          "orientation": {
            "type": "string",
            "enum": [
              "fixed",
              "mapped"
            ]
          },
          "lengthAxis": {
            "type": "string",
            "enum": [
              "x",
              "z"
            ]
          },
          "minLevel": {
            "type": "integer",
            "minimum": 0,
            "maximum": 26
          },
          "status": {
            "type": "string",
            "enum": [
              "preview",
              "draft",
              "historical"
            ]
          },
          "appearance": {
            "type": "object",
            "properties": {
              "kind": {
                "type": "string",
                "const": "historical"
              },
              "currentWorldEligible": {
                "type": "boolean",
                "const": false
              },
              "representedDate": {
                "type": "string",
                "minLength": 1
              },
              "validFrom": {
                "type": "string"
              },
              "validUntil": {
                "type": "string"
              }
            },
            "required": [
              "kind",
              "currentWorldEligible",
              "validFrom",
              "validUntil"
            ],
            "additionalProperties": false
          },
          "source": {
            "type": "string",
            "format": "uri"
          },
          "note": {
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "asset",
          "anchor",
          "status",
          "source"
        ],
        "additionalProperties": false
      }
    },
    "rules": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9.-]*$"
          },
          "title": {
            "type": "string",
            "minLength": 1
          },
          "asset": {
            "type": "string",
            "pattern": "^[a-z][a-z0-9_.-]*$"
          },
          "match": {
            "type": "object",
            "properties": {
              "classes": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "subclasses": {
                "minItems": 1,
                "type": "array",
                "items": {
                  "type": "string",
                  "minLength": 1
                }
              },
              "tags": {
                "type": "object",
                "propertyNames": {
                  "type": "string",
                  "minLength": 1
                },
                "additionalProperties": {
                  "minItems": 1,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1
                  }
                }
              }
            },
            "additionalProperties": false
          },
          "dimensions": {
            "type": "array",
            "prefixItems": [
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "number",
                "exclusiveMinimum": 0
              },
              {
                "type": "number",
                "exclusiveMinimum": 0
              }
            ],
            "items": false,
            "minItems": 3,
            "maxItems": 3
          },
          "orientation": {
            "type": "string",
            "enum": [
              "direction",
              "longest-edge",
              "north"
            ]
          },
          "lengthAxis": {
            "type": "string",
            "enum": [
              "x",
              "z"
            ]
          },
          "fit": {
            "type": "string",
            "enum": [
              "native",
              "footprint"
            ]
          },
          "replaceFootprint": {
            "type": "boolean"
          },
          "minLevel": {
            "type": "integer",
            "minimum": 0,
            "maximum": 26
          },
          "maxPerTile": {
            "type": "integer",
            "minimum": 1,
            "maximum": 64
          },
          "source": {
            "type": "string",
            "format": "uri"
          }
        },
        "required": [
          "id",
          "title",
          "asset",
          "match",
          "dimensions",
          "source"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "format",
    "title",
    "entries"
  ],
  "additionalProperties": false
}

37 guides · 36 schema formats · 41 API entry points · 10 samples. API, CLI and schema pages are generated from the shipped build.