├── .commitlintrc.js ├── .eslintignore ├── .eslintrc.js ├── .github ├── FUNDING.yml └── workflows │ ├── commitlint.yml │ ├── notify-discord.yml │ ├── on-pull-request.yml │ ├── on-push-master.yml │ └── release.yml ├── .gitignore ├── .releaserc ├── .vscode ├── launch.json └── tasks.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── package-binaries.js ├── package-lock.json ├── package.json ├── renovate.json ├── rollup.config.mjs ├── src ├── index.ts ├── logHelper.ts └── version.ts ├── test.js ├── testdata ├── olFlatStyles │ └── point_simple.json ├── point_simple.qml ├── point_simplepoint.geostyler ├── point_simplepoint.map ├── sld │ ├── point_simplepoint.sld │ └── point_simpletriangle.sld └── test.lyrx └── tsconfig.json /.commitlintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: ['@commitlint/config-conventional'] 3 | }; 4 | -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist 2 | -------------------------------------------------------------------------------- /.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | extends: '@terrestris/eslint-config-typescript', 3 | rules: { 4 | camelcase: [ 5 | 'off', 6 | { 7 | ignoreImports: true 8 | } 9 | ] 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/displaying-a-sponsor-button-in-your-repository#about-funding-files 2 | open_collective: geostyler 3 | 4 | -------------------------------------------------------------------------------- /.github/workflows/commitlint.yml: -------------------------------------------------------------------------------- 1 | name: Lint Commit Messages 2 | on: [pull_request, push] 3 | 4 | jobs: 5 | commitlint: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v4 9 | with: 10 | fetch-depth: 0 11 | - uses: wagoid/commitlint-github-action@v4 12 | with: 13 | configFile: .commitlintrc.js 14 | -------------------------------------------------------------------------------- /.github/workflows/notify-discord.yml: -------------------------------------------------------------------------------- 1 | name: Discord notification 2 | 3 | on: 4 | release: 5 | types: [published] 6 | 7 | jobs: 8 | discord-notification: 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Discord notification 📯 12 | env: 13 | DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} 14 | uses: Ilshidur/action-discord@0.3.2 15 | with: 16 | args: '${{ github.event.repository.name }} [${{ github.event.release.tag_name }}](${{ github.event.release.html_url }}) has been released. 🚀' 17 | -------------------------------------------------------------------------------- /.github/workflows/on-pull-request.yml: -------------------------------------------------------------------------------- 1 | name: Test Pull Request 2 | 3 | on: pull_request 4 | 5 | jobs: 6 | build: 7 | runs-on: ubuntu-latest 8 | 9 | strategy: 10 | matrix: 11 | node-version: [18.x, 20.x] 12 | 13 | steps: 14 | - name: Checkout sources 15 | uses: actions/checkout@v4 16 | 17 | - name: Use Node.js ${{ matrix.node-version }} 18 | uses: actions/setup-node@v4 19 | with: 20 | node-version: ${{ matrix.node-version }} 21 | 22 | - name: Cache Node.js modules 💾 23 | uses: actions/cache@v4 24 | with: 25 | path: ~/.npm 26 | key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }} 27 | restore-keys: | 28 | ${{ runner.OS }}-node- 29 | ${{ runner.OS }}- 30 | 31 | - name: Install dependencies ⏬ 32 | run: npm install 33 | 34 | - name: Lint code 💄 35 | run: npm run lint 36 | 37 | - name: Build artifacts 🏗️ 38 | run: npm run build 39 | 40 | - name: Test code ✅ 41 | run: npm run test 42 | 43 | -------------------------------------------------------------------------------- /.github/workflows/on-push-master.yml: -------------------------------------------------------------------------------- 1 | name: Test Push to Main 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | 12 | strategy: 13 | matrix: 14 | node-version: [18.x, 20.x] 15 | 16 | steps: 17 | - name: Checkout sources 18 | uses: actions/checkout@v4 19 | 20 | - name: Use Node.js ${{ matrix.node-version }} 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: ${{ matrix.node-version }} 24 | 25 | - name: Cache Node.js modules 💾 26 | uses: actions/cache@v4 27 | with: 28 | path: ~/.npm 29 | key: ${{ runner.OS }}-node-${{ hashFiles('**/package-lock.json') }} 30 | restore-keys: | 31 | ${{ runner.OS }}-node- 32 | ${{ runner.OS }}- 33 | 34 | - name: Install dependencies ⏬ 35 | run: npm install 36 | 37 | - name: Lint code 💄 38 | run: npm run lint 39 | 40 | - name: Build artifacts 🏗️ 41 | run: npm run build 42 | 43 | - name: Test code ✅ 44 | run: npm run test 45 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | workflow_dispatch: 5 | 6 | jobs: 7 | release: 8 | name: Release 9 | runs-on: ubuntu-latest 10 | steps: 11 | - name: Checkout sources 🔰 12 | uses: actions/checkout@v4 13 | 14 | - name: Setup Node.js 18 👷🏻 15 | uses: actions/setup-node@v4 16 | with: 17 | node-version: 18 18 | 19 | - name: Install dependencies ⏬ 20 | run: npm ci 21 | 22 | - name: Release 🚀 23 | uses: cycjimmy/semantic-release-action@v4.1.0 24 | id: semantic 25 | env: 26 | GITHUB_TOKEN: ${{ secrets.GH_RELEASE_TOKEN }} 27 | NPM_TOKEN: ${{ secrets.NPM_TOKEN }} 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | build 3 | binaries 4 | dist 5 | output-bulk 6 | output.* 7 | -------------------------------------------------------------------------------- /.releaserc: -------------------------------------------------------------------------------- 1 | { 2 | "branches": ["main"], 3 | "plugins": [ 4 | [ 5 | "@semantic-release/commit-analyzer", 6 | { 7 | "preset": "conventionalcommits" 8 | } 9 | ], 10 | [ 11 | "@semantic-release/release-notes-generator", 12 | { 13 | "preset": "conventionalcommits", 14 | "presetConfig": { 15 | "header": "Changelog of GeoStyler Client" 16 | } 17 | } 18 | ], 19 | [ 20 | "@semantic-release/exec", 21 | { 22 | "prepareCmd": "echo \"export default '${nextRelease.version}';\" > ./src/version.ts" 23 | } 24 | ], 25 | "@semantic-release/changelog", 26 | "@semantic-release/npm", 27 | [ 28 | "@semantic-release/git", 29 | { 30 | "assets": [ 31 | "CHANGELOG.md", "package.json", "package-lock.json", "./src/version.ts" 32 | ], 33 | "message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}" 34 | } 35 | ], 36 | [ 37 | "@semantic-release/github", 38 | { 39 | "assets": [ 40 | {"path": "./binaries/geostyler-linux.zip", "label": "GeoStyler CLI Linux executable"}, 41 | {"path": "./binaries/geostyler-macos.zip", "label": "GeoStyler CLI MacOS executable"}, 42 | {"path": "./binaries/geostyler-win.exe.zip", "label": "GeoStyler CLI Windows executable"} 43 | ] 44 | } 45 | ] 46 | ] 47 | } 48 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | // Verwendet IntelliSense zum Ermitteln möglicher Attribute. 3 | // Zeigen Sie auf vorhandene Attribute, um die zugehörigen Beschreibungen anzuzeigen. 4 | // Weitere Informationen finden Sie unter https://go.microsoft.com/fwlink/?linkid=830387 5 | "version": "0.2.0", 6 | "configurations": [ 7 | { 8 | "type": "node", 9 | "request": "launch", 10 | "name": "Launch Program", 11 | "skipFiles": [ 12 | "/**" 13 | ], 14 | "program": "${workspaceFolder}/src/index.ts", 15 | "preLaunchTask": "tsc: build", 16 | "outFiles": [ 17 | "${workspaceFolder}/dist/**/*.js" 18 | ] 19 | } 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "type": "typescript", 6 | "tsconfig": "tsconfig.json", 7 | "problemMatcher": ["$tsc"], 8 | "group": "build", 9 | "label": "tsc: build" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## [4.4.1](https://github.com/geostyler/geostyler-cli/compare/v4.4.0...v4.4.1) (2025-05-16) 2 | 3 | 4 | ### Bug Fixes 5 | 6 | * bump geostyler-openlayers-parser ([48cb2d6](https://github.com/geostyler/geostyler-cli/commit/48cb2d62df16e915f97d3161bb7c23dec2d36f3e)) 7 | 8 | ## [4.4.0](https://github.com/geostyler/geostyler-cli/compare/v4.3.1...v4.4.0) (2025-05-14) 9 | 10 | 11 | ### Features 12 | 13 | * add support for openlayers flat-styles ([057ff14](https://github.com/geostyler/geostyler-cli/commit/057ff146bfc0158aba29c90ffcf9eb5bd4aacfdf)) 14 | 15 | ## [4.3.1](https://github.com/geostyler/geostyler-cli/compare/v4.3.0...v4.3.1) (2025-01-13) 16 | 17 | 18 | ### Bug Fixes 19 | 20 | * update geostyler packages ([6ef08af](https://github.com/geostyler/geostyler-cli/commit/6ef08aff6156614ab786fa2ffee237b389c5aeae)) 21 | 22 | ## [4.3.0](https://github.com/geostyler/geostyler-cli/compare/v4.2.0...v4.3.0) (2025-01-07) 23 | 24 | 25 | ### Features 26 | 27 | * improve CLI conventions ([afa64a0](https://github.com/geostyler/geostyler-cli/commit/afa64a094c18a03a4a1fe814126826c2f7daf649)) 28 | 29 | ## [4.2.0](https://github.com/geostyler/geostyler-cli/compare/v4.1.2...v4.2.0) (2024-12-11) 30 | 31 | 32 | ### Features 33 | 34 | * add geostyler style as a format ([bc0cc03](https://github.com/geostyler/geostyler-cli/commit/bc0cc039201909edfba5e91c8210a16d724dd5f9)) 35 | 36 | ## [4.1.2](https://github.com/geostyler/geostyler-cli/compare/v4.1.1...v4.1.2) (2024-11-07) 37 | 38 | 39 | ### Bug Fixes 40 | 41 | * readd binaries to gitignore ([54758ad](https://github.com/geostyler/geostyler-cli/commit/54758ad43343a3d3f86a3d53bc66607dab1fe3fd)) 42 | * update the binary names and assets ([f84d295](https://github.com/geostyler/geostyler-cli/commit/f84d295453b3eb4bb89fc59df1236eddf37b9cc8)) 43 | 44 | ## [4.1.1](https://github.com/geostyler/geostyler-cli/compare/v4.1.0...v4.1.1) (2024-11-06) 45 | 46 | 47 | ### Bug Fixes 48 | 49 | * remove binaries from .gitignore ([8bf1afa](https://github.com/geostyler/geostyler-cli/commit/8bf1afa8d54cfce8a320a739be12c1d7108a18cd)) 50 | 51 | ## [4.1.0](https://github.com/geostyler/geostyler-cli/compare/v4.0.1...v4.1.0) (2024-10-31) 52 | 53 | 54 | ### Features 55 | 56 | * throw error for unsupported targetParsers ([14bb940](https://github.com/geostyler/geostyler-cli/commit/14bb940d6aee65547d2a4e87125fb5bfa4e3b1d1)) 57 | * adds geostyler-lyrx-parser ([cd4b625](https://github.com/geostyler/geostyler-cli/commit/cd4b625f01988c98bf8f5b02d9a46a36c0d2ec4e)) 58 | 59 | 60 | ### Bug Fixes 61 | 62 | * adapt outputfile name ([700518e](https://github.com/geostyler/geostyler-cli/commit/700518e00860bc9e19369fc24d6f6c5282beb7ed)) 63 | 64 | ## [4.0.1](https://github.com/geostyler/geostyler-cli/compare/v4.0.0...v4.0.1) (2024-10-07) 65 | 66 | 67 | ### Bug Fixes 68 | 69 | * make cli and standalone binaries build work ([6e790f6](https://github.com/geostyler/geostyler-cli/commit/6e790f6d2dd73d18ab106c1e92df270a81db10e7)) 70 | * stringify objects before writing file ([1d6c52f](https://github.com/geostyler/geostyler-cli/commit/1d6c52f438f8fa8573197dfc782419b45559accd)) 71 | * update branch name in CI configs ([756fcea](https://github.com/geostyler/geostyler-cli/commit/756fceafd4f41e7e402456f640a937d0840b1ead)) 72 | 73 | ## [4.0.0](https://github.com/geostyler/geostyler-cli/compare/v3.1.5...v4.0.0) (2024-06-20) 74 | 75 | 76 | ### ⚠ BREAKING CHANGES 77 | 78 | * Remove the geostyler command. Use geostyler-cli instead. 79 | 80 | ### Features 81 | 82 | * consolidate geostyler commands ([4addec8](https://github.com/geostyler/geostyler-cli/commit/4addec81e459bf5a0cdd4f1df838f884193235df)) 83 | 84 | ## [3.1.5](https://github.com/geostyler/geostyler-cli/compare/v3.1.4...v3.1.5) (2024-06-20) 85 | 86 | 87 | ### Bug Fixes 88 | 89 | * add missing dependency ([44f0f59](https://github.com/geostyler/geostyler-cli/commit/44f0f59b50e0c91b1e257d85a39d551125d620f0)) 90 | * create a version.ts file and use this for CLI version numbers ([#390](https://github.com/geostyler/geostyler-cli/issues/390)) ([5b4f47e](https://github.com/geostyler/geostyler-cli/commit/5b4f47e1449cd0e908746700e90431f80c703f2d)) 91 | 92 | ## [3.1.4](https://github.com/geostyler/geostyler-cli/compare/v3.1.3...v3.1.4) (2024-06-19) 93 | 94 | 95 | ### Bug Fixes 96 | 97 | * re-add build step ([1607cf4](https://github.com/geostyler/geostyler-cli/commit/1607cf4601926bb3fb87db66917103c5bfeb9017)) 98 | 99 | ## [3.1.3](https://github.com/geostyler/geostyler-cli/compare/v3.1.2...v3.1.3) (2024-06-19) 100 | 101 | 102 | ### Bug Fixes 103 | 104 | * ensure published assets have correct version ([#386](https://github.com/geostyler/geostyler-cli/issues/386)) ([91e4019](https://github.com/geostyler/geostyler-cli/commit/91e4019c1ccf2d466fd01c0ad32c0e18e4c3fa83)) 105 | 106 | ## [3.1.2](https://github.com/geostyler/geostyler-cli/compare/v3.1.1...v3.1.2) (2024-06-19) 107 | 108 | 109 | ### Bug Fixes 110 | 111 | * **deps:** update dependency ol to v9 ([ee3609c](https://github.com/geostyler/geostyler-cli/commit/ee3609c07522b547c72ffbc63c3690c57fcfbf7d)) 112 | 113 | ## [3.1.1](https://github.com/geostyler/geostyler-cli/compare/v3.1.0...v3.1.1) (2023-05-31) 114 | 115 | 116 | ### Bug Fixes 117 | 118 | * move binaries from repo to release assets ([#357](https://github.com/geostyler/geostyler-cli/issues/357)) ([2a794dd](https://github.com/geostyler/geostyler-cli/commit/2a794dd37518617c2f065a330709e72cd9c4e218)) 119 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | BSD 2-Clause License 2 | 3 | Copyright © 2020-present, terrestris GmbH & Co. KG and GeoStyler contributors 4 | All rights reserved. 5 | 6 | Redistribution and use in source and binary forms, with or without 7 | modification, are permitted provided that the following conditions are met: 8 | 9 | * Redistributions of source code must retain the above copyright notice, this 10 | list of conditions and the following disclaimer. 11 | 12 | * Redistributions in binary form must reproduce the above copyright notice, 13 | this list of conditions and the following disclaimer in the documentation 14 | and/or other materials provided with the distribution. 15 | 16 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 19 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE 20 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR 22 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 23 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 24 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 25 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 26 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # GeoStyler CLI 2 | 3 | A command line interface for [GeoStyler](https://geostyler.org) to convert 4 | between various formats for styling of geographic data. 5 | 6 | ## tl;dr 7 | 8 | ``` 9 | npx geostyler-cli --output new-qgis-style.qml my-existing.sld 10 | ``` 11 | 12 | ## Requirements 13 | 14 | `geostyler-cli` can either be run as a standalone application or installed using [Node.js](https://nodejs.org/). 15 | 16 | ## Standalone application 17 | 18 | Binaries are available for Linux, MacOS, and Windows on the 19 | [Releases](https://github.com/geostyler/geostyler-cli/releases) page. 20 | Download the zip file for your operating system, unzip, navigate to the folder 21 | and run the `geostyler` command: 22 | 23 | ``` 24 | geostyler-cli --output new-qgis-style.qml my-existing.sld 25 | ``` 26 | 27 | ## Usage without installation ⚡ 28 | 29 | `Node.js` includes [npx](https://docs.npmjs.com/cli/v10/commands/npx), this 30 | allows you to run commands from an npm package without having to install it. 31 | 32 | ``` 33 | npx geostyler-cli -s sld -t qgis -o output.qml input.sld 34 | ``` 35 | 36 | ## Global installation 37 | 38 | ### Installation 💾 39 | 40 | `Node.js` includes [npm](https://docs.npmjs.com/cli/v10/commands/npm) - the 41 | JavaScript package manager. To install the `geostyler` command globally: 42 | 43 | ``` 44 | npm install -g geostyler-cli 45 | ``` 46 | 47 | You can then use the new `geostyler-cli` command, e.g.: 48 | 49 | ``` 50 | geostyler-cli -s sld -t qgis -o output.qml input.sld 51 | ``` 52 | 53 | To process a folder of files: 54 | 55 | ``` 56 | geostyler-cli -s sld -t qgis -o /outputdir /inputdir 57 | ``` 58 | 59 | 60 | ### Update 🚀 61 | 62 | ``` 63 | npm update -g geostyler-cli 64 | ``` 65 | 66 | ### Uninstalling 😔 67 | 68 | ``` 69 | npm uninstall -g geostyler-cli 70 | ``` 71 | 72 | 73 | ## Syntax and examples 74 | 75 | To convert a single file: 76 | 77 | ```bash 78 | geostyler-cli [options] -o /path/to/output.ext /path/to/input.ext 79 | # example, relying on file extensions to select the parsers 80 | geostyler-cli -o point_simple.sld testdata/point_simple.qml 81 | # example with explicit parsers 82 | geostyler-cli -s qml -t sld -o point_simple.sld testdata/point_simple.qml 83 | ``` 84 | 85 | To convert all files in a directory: 86 | 87 | ```bash 88 | geostyler-cli [options] -t qgis -o /path/to/output /path/to/input/ 89 | # example 90 | geostyler-cli -s sld -t qgis -o ./output-sld testdata/sld 91 | ``` 92 | 93 | To output the GeoStyler format to `stdout` (only available for a single file), don't 94 | set an output file or parser: 95 | 96 | ```bash 97 | geostyler-cli [options] /path/to/input.ext 98 | # print the GeoStyler format to stdout (relying on the file extension to select the parser) 99 | geostyler-cli testdata/point_simple.qml 100 | # print an SLD output to stdout 101 | geostyler-cli -t sld testdata/point_simple.qml 102 | ``` 103 | 104 | ## Options 105 | 106 | * `-h` / `--help` Display the help and exit. 107 | * `-o` / `--output` Output filename or directory. Required when the source is a directory. 108 | For a file leave this empty to write to `stdout`. [string] 109 | * `-s` / `--source` Source parser, either `mapbox`, `mapfile` or `map`, 110 | "sld" or "se" for SLD - the parser will read the version from the file, 111 | "qgis" or "qml" for QGIS QML files, and "ol-flat" for OpenLayers FlatStyles. 112 | If not given, it will be guessed from the extension of the input file. 113 | Mandatory if the the target is a directory. 114 | * `-t` / `--target` Target parser, either `mapbox`, `sld` (for SLD 1.0), `se` (for SLD 1.1), 115 | "qgis" or "qml" for QGIS QML files, or "ol-flat" for OpenLayers FlatStyles. 116 | If not given, it will be guessed from the extension of the output file. 117 | Mapfiles are not currently supported as target. 118 | Mandatory if the the target is a directory. 119 | * `-v` / `--version` Display the version of the program. 120 | 121 | ## Developing 122 | 123 | In your clone of the repo, in the root directory: 124 | 125 | ```bash 126 | npm install # get dependencies 127 | npm run build # build from possibly changed source 128 | # now you can call your build like this: 129 | npm start -- -s sld -t qgis -o output.qml testdata/point_simplepoint.sld 130 | ``` 131 | 132 | ## Funding & financial sponsorship 133 | 134 | Maintenance and further development of this code can be funded through the 135 | [GeoStyler Open Collective](https://opencollective.com/geostyler). All contributions and 136 | expenses can transparently be reviewed by anyone; you see what we use the donated money for. 137 | Thank you for any financial support you give the GeoStyler project 💞 138 | 139 | -------------------------------------------------------------------------------- /package-binaries.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable no-console */ 2 | const fs = require('fs'); 3 | const path = require('path'); 4 | const AdmZip = require('adm-zip'); 5 | 6 | 7 | // Define the folder path and the list of file names 8 | const folderPath = './binaries/'; 9 | const fileNames = ['geostyler-win.exe', 'geostyler-linux', 'geostyler-macos']; 10 | 11 | function renameFile(oldPath, newPath) { 12 | return new Promise((resolve, reject) => { 13 | fs.rename(oldPath, newPath, (error) => { 14 | if (error) { 15 | reject(error); 16 | } else { 17 | resolve(); 18 | } 19 | }); 20 | }); 21 | } 22 | 23 | // Function to execute the renaming and zipping process 24 | async function processFiles() { 25 | try { 26 | for (const fileName of fileNames) { 27 | const filePath = folderPath + fileName; 28 | const renamedFilePath = folderPath + fileName.replace('-win', '').replace('-macos', '').replace('-linux', ''); 29 | 30 | // Rename the file 31 | await renameFile(filePath, renamedFilePath); 32 | 33 | // Zip the file 34 | const outputZipFilePath = filePath + '.zip'; 35 | const zip = new AdmZip(); 36 | zip.addLocalFile(renamedFilePath); 37 | 38 | // Save the zip archive 39 | zip.writeZip(outputZipFilePath); 40 | 41 | // Rename the zipped file back to its original name 42 | await renameFile(renamedFilePath, filePath); 43 | console.log(`Processed file: ${fileName}`); 44 | } 45 | 46 | console.log('All files processed successfully.'); 47 | } catch (error) { 48 | console.error('An error occurred:', error); 49 | } 50 | } 51 | 52 | processFiles(); 53 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "geostyler-cli", 3 | "version": "4.4.1", 4 | "description": "", 5 | "main": "dist/geostyler.js", 6 | "files": [ 7 | "dist" 8 | ], 9 | "bin": { 10 | "geostyler-cli": "dist/geostyler.js" 11 | }, 12 | "scripts": { 13 | "build": "npm run build-clean && npm run build-only", 14 | "build-clean": "rimraf build/ dist/", 15 | "build-only": "tsc -p tsconfig.json && rollup -c rollup.config.mjs", 16 | "lint:build": "npm run lint && npm run build", 17 | "start": "node dist/geostyler.js", 18 | "lint": "eslint . && tsc --noEmit --project tsconfig.json", 19 | "test": "node test.js", 20 | "build-binaries": "npm run build && pkg dist/geostyler.js --targets node18-linux-x64,node18-macos-x64,node18-win-x64 --out-path binaries", 21 | "package-binaries": "npm run build-binaries && node package-binaries.js", 22 | "prepublishOnly": "npm run build", 23 | "postpublish": "npm run package-binaries" 24 | }, 25 | "pkg": { 26 | "targets": [ 27 | "node18-linux-x64", 28 | "node18-macos-x64", 29 | "node18-win-x64" 30 | ], 31 | "outputPath": "./binaries" 32 | }, 33 | "repository": { 34 | "type": "git", 35 | "url": "git+https://github.com/geostyler/geostyler-cli.git" 36 | }, 37 | "keywords": [ 38 | "geo", 39 | "styler", 40 | "geostyler", 41 | "cli" 42 | ], 43 | "author": "", 44 | "license": "BSD-2-Clause", 45 | "bugs": { 46 | "url": "https://github.com/geostyler/geostyler-cli/issues" 47 | }, 48 | "homepage": "https://github.com/geostyler/geostyler-cli#readme", 49 | "engines": { 50 | "node": ">=12.0.0", 51 | "npm": ">=6.0.0" 52 | }, 53 | "devDependencies": { 54 | "@commitlint/cli": "^17.6.5", 55 | "@commitlint/config-conventional": "^17.6.5", 56 | "@rollup/plugin-commonjs": "^26.0.1", 57 | "@rollup/plugin-json": "^6.1.0", 58 | "@rollup/plugin-node-resolve": "^15.2.3", 59 | "@semantic-release/changelog": "^6.0.3", 60 | "@semantic-release/exec": "^6.0.3", 61 | "@semantic-release/git": "^10.0.1", 62 | "@terrestris/eslint-config-typescript": "^3.1.0", 63 | "@types/gradient-string": "^1.1.2", 64 | "@types/node": "^20.0.0", 65 | "@typescript-eslint/eslint-plugin": "^5.59.1", 66 | "@typescript-eslint/parser": "^5.59.1", 67 | "adm-zip": "^0.5.10", 68 | "eslint": "^8.39.0", 69 | "geostyler-lyrx-parser": "^1.1.1", 70 | "geostyler-mapbox-parser": "^6.1.0", 71 | "geostyler-mapfile-parser": "^4.0.1", 72 | "geostyler-qgis-parser": "^4.0.0", 73 | "geostyler-sld-parser": "^7.1.0", 74 | "geostyler-style": "^10.0.0", 75 | "gradient-string": "^2.0.2", 76 | "minimist": "^1.2.8", 77 | "ol": "^9.0.0", 78 | "ora": "5.4.1", 79 | "pkg": "^5.8.1", 80 | "rimraf": "^5.0.0", 81 | "rollup": "^4.21.3", 82 | "terminal-image": "^2.0.0", 83 | "typescript": "^5.0.4" 84 | }, 85 | "funding": "https://opencollective.com/geostyler", 86 | "dependencies": { 87 | "geostyler-openlayers-parser": "^5.1.1" 88 | } 89 | } 90 | -------------------------------------------------------------------------------- /renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json", 3 | "extends": [ 4 | "config:recommended" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /rollup.config.mjs: -------------------------------------------------------------------------------- 1 | import { nodeResolve } from '@rollup/plugin-node-resolve'; 2 | import commonjs from '@rollup/plugin-commonjs'; 3 | import json from '@rollup/plugin-json'; 4 | 5 | export default { 6 | input: 'build/src/index.js', 7 | output: { 8 | file: 'dist/geostyler.js', 9 | format: 'cjs' 10 | }, 11 | plugins: [nodeResolve({preferBuiltins: true}), commonjs(), json()] 12 | }; 13 | -------------------------------------------------------------------------------- /src/index.ts: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | import SLDParser from 'geostyler-sld-parser'; 4 | import QGISParser from 'geostyler-qgis-parser'; 5 | import MapfileParser from 'geostyler-mapfile-parser'; 6 | import MapboxParser from 'geostyler-mapbox-parser'; 7 | import LyrxParser from 'geostyler-lyrx-parser'; 8 | import OlFlatStyleParser from 'geostyler-openlayers-parser/dist/OlFlatStyleParser'; 9 | 10 | import { 11 | existsSync, 12 | lstatSync, 13 | mkdirSync, 14 | promises, 15 | readdirSync 16 | } from 'fs'; 17 | import minimist from 'minimist'; 18 | import { StyleParser, ReadStyleResult, WriteStyleResult } from 'geostyler-style'; 19 | import ora, { Ora } from 'ora'; 20 | import { Readable } from 'stream'; 21 | import { 22 | logHelp, 23 | logVersion 24 | } from './logHelper.js'; 25 | import path from 'path'; 26 | 27 | const ensureTrailingSlash = (inputString: string): string => { 28 | if (!inputString) { 29 | return ''; 30 | } 31 | return inputString.at(- 1) === path.sep ? inputString : `${inputString}` + path.sep; 32 | }; 33 | 34 | const getParserFromFormat = (inputString: string): StyleParser | undefined => { 35 | if (!inputString) { 36 | throw new Error('No input'); 37 | } 38 | switch (inputString.toLowerCase()) { 39 | case 'lyrx': 40 | return new LyrxParser(); 41 | case 'mapbox': 42 | return new MapboxParser(); 43 | case 'mapfile': 44 | case 'map': 45 | return new MapfileParser(); 46 | case 'sld': 47 | return new SLDParser(); 48 | case 'se': 49 | return new SLDParser({ sldVersion: '1.1.0' }); 50 | case 'qgis': 51 | case 'qml': 52 | return new QGISParser(); 53 | case 'ol-flat': 54 | return new OlFlatStyleParser(); 55 | case 'geostyler': 56 | return undefined; 57 | default: 58 | throw new Error(`Unrecognized format: ${inputString}`); 59 | } 60 | }; 61 | 62 | const getFormatFromFilename = (fileName: string): string | undefined => { 63 | if (!fileName) { 64 | return undefined; 65 | } 66 | let fileEnding = fileName.split('.').pop(); 67 | if (!fileEnding) { 68 | return undefined; 69 | } 70 | fileEnding = fileEnding.toLowerCase(); 71 | if (['lyrx', 'mapbox', 'map', 'sld', 'qml', 'geostyler'].includes(fileEnding)) { 72 | return fileEnding; 73 | } 74 | return undefined; 75 | }; 76 | 77 | const getExtensionFromFormat = (format: string): string => { 78 | if (!format) { 79 | return ''; 80 | } 81 | switch (format.toLowerCase()) { 82 | case 'lyrx': 83 | return 'lyrx'; 84 | case 'mapfile': 85 | return 'map'; 86 | case 'qgis': 87 | return 'qml'; 88 | default: 89 | return format; 90 | } 91 | }; 92 | 93 | const tryRemoveExtension = (fileName: string): string => { 94 | const possibleExtensions = ['js', 'ts', 'mapbox', 'map', 'sld', 'qml', 'lyrx']; 95 | const splittedFileName = fileName.split('.'); 96 | const sourceFileExtension = splittedFileName.pop(); 97 | if (sourceFileExtension && possibleExtensions.includes(sourceFileExtension.toLowerCase())) { 98 | return splittedFileName.join('.'); 99 | } 100 | return fileName; 101 | }; 102 | 103 | const computeTargetPath = ( 104 | sourcePathFile: string, 105 | outputPath: string, 106 | targetIsFile: boolean, 107 | targetFormat: string 108 | ): string => { 109 | if (sourcePathFile === '-') { 110 | return outputPath; 111 | } 112 | if (targetIsFile) { 113 | // Case file -> file 114 | return outputPath; 115 | } 116 | 117 | // ensure all path separators are correct for the platform 118 | sourcePathFile = path.normalize(sourcePathFile); 119 | outputPath = path.normalize(outputPath); 120 | 121 | // Case file -> directory 122 | // Get output name from source and add extension. 123 | const pathElements = sourcePathFile.split(path.sep); 124 | const lastElement = pathElements?.pop(); 125 | pathElements.shift(); 126 | 127 | const finalPathElements = [outputPath, pathElements].flat(); 128 | const finalPath = finalPathElements.join(path.sep); 129 | 130 | if (typeof lastElement) { 131 | const targetFileName = tryRemoveExtension(lastElement as string); 132 | if (!existsSync(finalPath)) { 133 | mkdirSync(finalPath, { recursive: true }); 134 | } 135 | return `${ensureTrailingSlash(finalPath)}${targetFileName}.${getExtensionFromFormat(targetFormat)}`; 136 | } else { 137 | return ''; 138 | } 139 | }; 140 | 141 | function collectPaths(basePath: string, isFile: boolean): string[] { 142 | if (isFile || basePath === '-') { 143 | return [basePath]; 144 | } else { 145 | const files = readdirSync(basePath); 146 | const parts: string[] = []; 147 | files.forEach((file) => { 148 | const fileIsFile = lstatSync(`${ensureTrailingSlash(basePath)}${file}`).isFile(); 149 | if (fileIsFile) { 150 | parts.push(`${ensureTrailingSlash(basePath)}${file}`); 151 | } else { 152 | parts.push(...collectPaths(`${ensureTrailingSlash(basePath)}${file}`, false)); 153 | } 154 | }); 155 | return parts; 156 | } 157 | } 158 | 159 | function handleResult(result: ReadStyleResult | WriteStyleResult, parser: StyleParser, stage: 'Source' | 'Target') { 160 | const { output, errors, warnings, unsupportedProperties } = result; 161 | if (errors && errors.length > 0) { 162 | throw errors; 163 | } 164 | if (warnings) { 165 | // eslint-disable-next-line no-console 166 | warnings.map(console.warn); 167 | } 168 | if (unsupportedProperties) { 169 | // eslint-disable-next-line no-console 170 | console.log(`${stage} parser ${parser.title} does not support the following properties:`); 171 | // eslint-disable-next-line no-console 172 | console.log(unsupportedProperties); 173 | } 174 | return output; 175 | } 176 | 177 | async function readStream(stream: Readable, encoding: BufferEncoding) { 178 | const chunks = []; 179 | for await (const chunk of stream) { 180 | chunks.push(chunk); 181 | } 182 | return Buffer.concat(chunks).toString(encoding); 183 | } 184 | 185 | async function writeFile( 186 | sourceFile: string, sourceParser: StyleParser | undefined, 187 | targetFile: string, targetParser: StyleParser | undefined, 188 | oraIndicator: Ora 189 | ): Promise { 190 | if (targetParser instanceof LyrxParser) { 191 | throw new Error('LyrxParser is not supported as target parser.'); 192 | } 193 | if (targetParser instanceof MapfileParser) { 194 | throw new Error('MapfileParser is not supported as target parser.'); 195 | } 196 | const indicator = oraIndicator; // for linter. 197 | 198 | try { 199 | indicator.text = `Reading from ${sourceFile}`; 200 | 201 | let inputFileData = (sourceFile === '-') 202 | ? await readStream(process.stdin, 'utf-8') 203 | : await promises.readFile(sourceFile, 'utf-8'); 204 | 205 | // If no sourceParser is set, just parse it as JSON - it should already be in geostyler format. 206 | // LyrxParser expects a JSON object as input, so we need to parse it as an extra step. 207 | if (!sourceParser || sourceParser instanceof LyrxParser || sourceParser instanceof OlFlatStyleParser) { 208 | inputFileData = JSON.parse(inputFileData); 209 | } 210 | 211 | const readOutput = sourceParser 212 | ? handleResult(await sourceParser.readStyle(inputFileData as any), sourceParser, 'Source') 213 | : inputFileData; 214 | 215 | indicator.text = `Writing to ${targetFile}`; 216 | const writeOutput = targetParser 217 | ? handleResult(await targetParser.writeStyle(readOutput), targetParser, 'Target') 218 | : readOutput; 219 | 220 | const finalOutput = typeof writeOutput === 'object' ? JSON.stringify(writeOutput, undefined, 2) : writeOutput; 221 | 222 | if (targetFile) { 223 | await promises.writeFile(targetFile, finalOutput, 'utf-8'); 224 | indicator.succeed(`File "${sourceFile}" translated successfully. Output written to ${targetFile}`); 225 | } else { 226 | indicator.succeed(`File "${sourceFile}" translated successfully. Output written to stdout:\n`); 227 | // eslint-disable-next-line no-console 228 | console.log(finalOutput); 229 | } 230 | return 0; 231 | } catch (error) { 232 | indicator.fail(`Error during translation of file "${sourceFile}": ${error}`); 233 | return 1; 234 | } 235 | } 236 | 237 | async function main() { 238 | // Parse args 239 | const args = minimist(process.argv.slice(2)); 240 | const { 241 | s, 242 | source, 243 | t, 244 | target, 245 | o, 246 | output, 247 | h, 248 | help, 249 | v, 250 | version, 251 | _: unnamedArgs 252 | } = args; 253 | 254 | if (h || help) { 255 | logHelp(); 256 | return; 257 | } 258 | 259 | if (v || version) { 260 | logVersion(); 261 | return; 262 | } 263 | 264 | // Assign args 265 | const sourcePath: string = unnamedArgs[0]; 266 | let sourceFormat: string | undefined = s || source; 267 | let targetFormat: string | undefined = t || target; 268 | const outputPath: string = o || output; 269 | 270 | // Instantiate progress indicator 271 | const indicator = ora({ text: 'Starting Geostyler CLI' }).start(); 272 | 273 | // Check source path arg. 274 | if (!sourcePath) { 275 | indicator.fail('No input file or folder specified.'); 276 | process.exit(1); 277 | } 278 | 279 | // Check source exists, is a dir or a file ? 280 | if (sourcePath !== '-' && !existsSync(sourcePath)) { 281 | indicator.fail('Input file or folder does not exist.'); 282 | process.exit(1); 283 | } 284 | const sourceIsFile = (sourcePath !== '-') && lstatSync(sourcePath).isFile(); 285 | 286 | // Try to define type of target (file or dir). 287 | // Assume the target is the same as the source 288 | let targetIsFile = sourceIsFile; 289 | 290 | // Dir to file is not possible 291 | if (!sourceIsFile && targetIsFile) { 292 | indicator.fail('The source is a directory, so the target must be directory, too.'); 293 | process.exit(1); 294 | } 295 | 296 | // Get source parser. 297 | if (!sourceFormat && sourceIsFile) { 298 | sourceFormat = getFormatFromFilename(sourcePath); 299 | } 300 | if (!sourceFormat) { 301 | indicator.info('No sourceparser was specified. Input will be parsed as a GeoStyler object.'); 302 | sourceFormat = 'geostyler'; 303 | } 304 | const sourceParser = getParserFromFormat(sourceFormat); 305 | 306 | // Get target parser. 307 | if (!targetFormat && targetIsFile) { 308 | targetFormat = getFormatFromFilename(outputPath); 309 | } 310 | if (!targetFormat) { 311 | indicator.info('No targetparser was specified. Output will be a GeoStyler object.'); 312 | targetFormat = 'geostyler'; 313 | } 314 | const targetParser = getParserFromFormat(targetFormat); 315 | 316 | // Get source(s) path(s). 317 | const sourcePaths = collectPaths(sourcePath, sourceIsFile); 318 | 319 | const writePromises: Promise[] = []; 320 | sourcePaths.forEach((srcPath) => { 321 | indicator.text = `Transforming ${srcPath} from ${sourceFormat} to ${targetFormat}`; 322 | // Get correct output path 323 | const outputPathFile = computeTargetPath(srcPath, outputPath, targetIsFile, targetFormat); 324 | 325 | // Add the the translation promise. 326 | writePromises.push(writeFile(srcPath, sourceParser, outputPathFile, targetParser, indicator)); 327 | }); 328 | 329 | const returnCodes = await Promise.all(writePromises); 330 | const returnCode = returnCodes.reduce((acc, value) => acc || value, 0); 331 | process.exit(returnCode); 332 | } 333 | 334 | main(); 335 | -------------------------------------------------------------------------------- /src/logHelper.ts: -------------------------------------------------------------------------------- 1 | import gradient from 'gradient-string'; 2 | import version from './version'; 3 | 4 | export const logTitle = () :void => { 5 | console.log(gradient('#611E82', '#272C82', '#00943D', '#FFED00', '#F48E00', '#E7000E').multiline(` 6 | ██████╗ ███████╗ ██████╗ ███████╗████████╗██╗ ██╗██╗ ███████╗██████╗ 7 | ██╔════╝ ██╔════╝██╔═══██╗██╔════╝╚══██╔══╝╚██╗ ██╔╝██║ ██╔════╝██╔══██╗ 8 | ██║ ███╗█████╗ ██║ ██║███████╗ ██║ ╚████╔╝ ██║ █████╗ ██████╔╝ 9 | ██║ ██║██╔══╝ ██║ ██║╚════██║ ██║ ╚██╔╝ ██║ ██╔══╝ ██╔══██╗ 10 | ╚██████╔╝███████╗╚██████╔╝███████║ ██║ ██║ ███████╗███████╗██║ ██║ 11 | ╚═════╝ ╚══════╝ ╚═════╝ ╚══════╝ ╚═╝ ╚═╝ ╚══════╝╚══════╝╚═╝ ╚═╝ 12 | `)); 13 | }; 14 | 15 | export const logHelp = () :void => { 16 | logTitle(); 17 | console.log(` 18 | Basic syntax: 19 | npx geostyler-cli [options] [input_file | [input_directory]] 20 | geostyler-cli [options] [input_file | input_directory] 21 | 22 | Example: 23 | npx geostyler-cli -s sld -t qgis -o output.qml [YOUR_SLD.sld] 24 | geostyler-cli -s qml -t mapfile -o myStyle.map testdata/point_simple.qml 25 | geostyler-cli -s sld -t qgis -o ./output-sld testdata/sld 26 | 27 | Options: 28 | -h / --help : Display this help and exit. 29 | -o / --output : Output filename or directory. Required when the source is a directory. 30 | For a file leave this empty to write to stdout. [string] 31 | -s / --source : Source parser, either "mapbox", "mapfile" or "map", 32 | "sld" or "se" for SLD - the parser will read the version from the file, 33 | "qgis" or "qml" for QGIS QML files, and "ol-flat" for OpenLayers FlatStyles. 34 | If not given, it will be guessed from the extension of the input file. 35 | Mandatory if the the target is a directory. 36 | -t / --target : Target parser, either "mapbox", "sld" (for SLD 1.0), "se" (for SLD 1.1), 37 | "qgis" or "qml" for QGIS QML files, or "ol-flat" for OpenLayers FlatStyles. 38 | If not given, it will be guessed from the extension of the output file. 39 | Mapfiles are not currently supported as target. 40 | Mandatory if the the target is a directory. 41 | --from-stdin : Read input from stdin. If this option is set, the input file is ignored. 42 | -v / --version: Display the version of the program. 43 | `); 44 | }; 45 | 46 | export const logVersion = () : void => { 47 | console.log(`v${version}`); 48 | }; 49 | -------------------------------------------------------------------------------- /src/version.ts: -------------------------------------------------------------------------------- 1 | export default '4.4.1'; 2 | -------------------------------------------------------------------------------- /test.js: -------------------------------------------------------------------------------- 1 | const fs = require('fs'); 2 | const { spawnSync } = require('child_process'); 3 | 4 | function checkFileCreated(outputFile) { 5 | try { 6 | fs.accessSync(outputFile, fs.constants.F_OK); 7 | return true; 8 | } catch (err) { 9 | /* eslint-disable no-console */ 10 | console.log(`The file: ${outputFile} was not found`); 11 | return false; 12 | } 13 | } 14 | 15 | function runTest(args, outputFile) { 16 | const cmd = 'npm'; 17 | const result = spawnSync(cmd, args, { shell: true }); 18 | /* eslint-disable no-console */ 19 | console.log(`Status: ${result.status.toString()}`); 20 | console.log(`Output: ${result.stdout.toString()}`); 21 | console.log(`Error: ${result.stderr.toString()}`); 22 | } 23 | 24 | function runAllTests() { 25 | 26 | let success = true; 27 | 28 | // test sld to qgis 29 | let outputFile = 'output.qml'; 30 | let args = ['start', '--', '-s', 'sld', '-t', 'qgis', '-o', outputFile, 'testdata/sld/point_simplepoint.sld']; 31 | runTest(args, outputFile); 32 | 33 | if (checkFileCreated(outputFile) === false) { 34 | success = false; 35 | } 36 | 37 | // test qgis to sld 38 | outputFile = 'output.sld'; 39 | args = ['start', '--', '-s', 'qgis', '-t', 'sld', '-o', outputFile, 'testdata/point_simple.qml']; 40 | runTest(args, outputFile); 41 | 42 | if (checkFileCreated(outputFile) === false) { 43 | success = false; 44 | } 45 | 46 | // test mapfile to geostyler 47 | outputFile = 'output.geostyler'; 48 | args = ['start', '--', '-s', 'mapfile', '-o', outputFile, 'testdata/point_simplepoint.map']; 49 | runTest(args, outputFile); 50 | 51 | if (checkFileCreated(outputFile) === false) { 52 | success = false; 53 | } 54 | 55 | // test geostyler to mapbox 56 | outputFile = 'output.mapbox'; 57 | args = ['start', '--', '-s', 'geostyler', '-o', outputFile, 'testdata/point_simplepoint.geostyler']; 58 | runTest(args, outputFile); 59 | 60 | if (checkFileCreated(outputFile) === false) { 61 | success = false; 62 | } 63 | 64 | // test openlayers flatstyle to geostyler 65 | outputFile = 'output.json'; 66 | args = ['start', '--', '-s', 'ol-flat', '-o', outputFile, 'testdata/olFlatStyles/point_simple.json']; 67 | runTest(args, outputFile); 68 | 69 | if (checkFileCreated(outputFile) === false) { 70 | success = false; 71 | } 72 | 73 | // test folder output 74 | args = ['start', '--', '-s', 'sld', '-t', 'qgis', '-o', './output-bulk', 'testdata/sld']; 75 | runTest(args, outputFile); 76 | 77 | if (checkFileCreated('./output-bulk/sld/point_simplepoint.qml') === false) { 78 | success = false; 79 | } 80 | 81 | if (checkFileCreated('./output-bulk/sld/point_simpletriangle.qml') === false) { 82 | success = false; 83 | } 84 | 85 | return success; 86 | } 87 | 88 | if (runAllTests() === false) { 89 | process.exit(1); 90 | } 91 | -------------------------------------------------------------------------------- /testdata/olFlatStyles/point_simple.json: -------------------------------------------------------------------------------- 1 | { 2 | "circle-radius": 3, 3 | "circle-fill-color": "#FF00004D", 4 | "circle-stroke-color": "#0000FF4D" 5 | } 6 | -------------------------------------------------------------------------------- /testdata/point_simple.qml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /testdata/point_simplepoint.geostyler: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Simple Point", 3 | "rules": [ 4 | { 5 | "name": "", 6 | "symbolizers": [ 7 | { 8 | "kind": "Mark", 9 | "wellKnownName": "circle", 10 | "fillOpacity": 0.5, 11 | "color": "#FF0000", 12 | "radius": 3, 13 | "strokeColor": "#0000FF", 14 | "strokeOpacity": 0.7 15 | } 16 | ] 17 | } 18 | ] 19 | } -------------------------------------------------------------------------------- /testdata/point_simplepoint.map: -------------------------------------------------------------------------------- 1 | MAP 2 | SYMBOL 3 | NAME "circle" 4 | TYPE ELLIPSE 5 | POINTS 6 | 1 1 7 | END 8 | FILLED TRUE 9 | END 10 | LAYER 11 | NAME "Simple Point" 12 | TYPE POINT 13 | STATUS ON 14 | SIZEUNITS PIXELS 15 | CLASS 16 | NAME "default" 17 | STYLE 18 | SYMBOL "circle" 19 | COLOR "#FF0000" 20 | OUTLINECOLOR "#0000FF" 21 | END 22 | END 23 | END 24 | END -------------------------------------------------------------------------------- /testdata/sld/point_simplepoint.sld: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | Simple Point 10 | 11 | Simple Point 12 | 13 | 14 | 15 | 16 | 17 | circle 18 | 19 | #FF0000 20 | 0.5 21 | 22 | 23 | #0000FF 24 | 0.7 25 | 26 | 27 | 6 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /testdata/sld/point_simpletriangle.sld: -------------------------------------------------------------------------------- 1 | 2 | 8 | 9 | Simple Triangle 10 | 11 | Simple Triangle 12 | 13 | 14 | 15 | 16 | 17 | triangle 18 | 19 | #FF0000 20 | 0.5 21 | 22 | 23 | #0000FF 24 | 0.7 25 | 26 | 27 | 6 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /testdata/test.lyrx: -------------------------------------------------------------------------------- 1 | { 2 | "type" : "CIMLayerDocument", 3 | "version" : "3.2.0", 4 | "build" : 49116, 5 | "layers" : [ 6 | "CIMPATH=map/av__bodenbedeckung_s_w.xml" 7 | ], 8 | "layerDefinitions" : [ 9 | { 10 | "type" : "CIMFeatureLayer", 11 | "name" : "AV: Bodenbedeckung s/w", 12 | "uRI" : "CIMPATH=map/av__bodenbedeckung_s_w.xml", 13 | "sourceModifiedTime" : { 14 | "type" : "TimeInstant" 15 | }, 16 | "metadataURI" : "CIMPATH=Metadata/8d75b85897a875152c30c15dc85edb94.xml", 17 | "useSourceMetadata" : false, 18 | "layerElevation" : { 19 | "type" : "CIMLayerElevationSurface" 20 | }, 21 | "layerType" : "Operational", 22 | "showLegends" : true, 23 | "visibility" : false, 24 | "displayCacheType" : "Permanent", 25 | "maxDisplayCacheAge" : 5, 26 | "showPopups" : true, 27 | "serviceLayerID" : -1, 28 | "refreshRate" : -1, 29 | "refreshRateUnit" : "esriTimeUnitsSeconds", 30 | "blendingMode" : "Alpha", 31 | "allowDrapingOnIntegratedMesh" : true, 32 | "autoGenerateFeatureTemplates" : true, 33 | "featureElevationExpression" : "0", 34 | "featureTable" : { 35 | "type" : "CIMFeatureTable", 36 | "displayField" : "OBJNAME", 37 | "editable" : true, 38 | "fieldDescriptions" : [ 39 | { 40 | "type" : "CIMFieldDescription", 41 | "alias" : "FILEID", 42 | "fieldName" : "FILEID", 43 | "numberFormat" : { 44 | "type" : "CIMNumericFormat", 45 | "alignmentOption" : "esriAlignRight", 46 | "alignmentWidth" : 12, 47 | "roundingOption" : "esriRoundNumberOfDecimals", 48 | "roundingValue" : 0 49 | }, 50 | "visible" : true, 51 | "searchMode" : "Exact" 52 | }, 53 | { 54 | "type" : "CIMFieldDescription", 55 | "alias" : "GDENR", 56 | "fieldName" : "GDENR", 57 | "numberFormat" : { 58 | "type" : "CIMNumericFormat", 59 | "alignmentOption" : "esriAlignRight", 60 | "alignmentWidth" : 12, 61 | "roundingOption" : "esriRoundNumberOfDecimals", 62 | "roundingValue" : 0 63 | }, 64 | "visible" : true, 65 | "searchMode" : "Exact" 66 | }, 67 | { 68 | "type" : "CIMFieldDescription", 69 | "alias" : "Art", 70 | "fieldName" : "Art", 71 | "visible" : true, 72 | "searchMode" : "Exact" 73 | }, 74 | { 75 | "type" : "CIMFieldDescription", 76 | "alias" : "AssNr", 77 | "fieldName" : "AssNr", 78 | "visible" : true, 79 | "searchMode" : "Exact" 80 | }, 81 | { 82 | "type" : "CIMFieldDescription", 83 | "alias" : "EGID", 84 | "fieldName" : "EGID", 85 | "numberFormat" : { 86 | "type" : "CIMNumericFormat", 87 | "alignmentOption" : "esriAlignRight", 88 | "alignmentWidth" : 12, 89 | "roundingOption" : "esriRoundNumberOfDecimals", 90 | "roundingValue" : 0 91 | }, 92 | "visible" : true, 93 | "searchMode" : "Exact" 94 | }, 95 | { 96 | "type" : "CIMFieldDescription", 97 | "alias" : "ObjName", 98 | "fieldName" : "ObjName", 99 | "visible" : true, 100 | "searchMode" : "Exact" 101 | }, 102 | { 103 | "type" : "CIMFieldDescription", 104 | "alias" : "PolizeiNr", 105 | "fieldName" : "PolizeiNr", 106 | "visible" : true, 107 | "searchMode" : "Exact" 108 | }, 109 | { 110 | "type" : "CIMFieldDescription", 111 | "alias" : "StrName", 112 | "fieldName" : "StrName", 113 | "visible" : true, 114 | "searchMode" : "Exact" 115 | }, 116 | { 117 | "type" : "CIMFieldDescription", 118 | "alias" : "ImmoNr", 119 | "fieldName" : "ImmoNr", 120 | "visible" : true, 121 | "searchMode" : "Exact" 122 | }, 123 | { 124 | "type" : "CIMFieldDescription", 125 | "alias" : "OBJECTID", 126 | "fieldName" : "OBJECTID", 127 | "numberFormat" : { 128 | "type" : "CIMNumericFormat", 129 | "alignmentOption" : "esriAlignRight", 130 | "alignmentWidth" : 12, 131 | "roundingOption" : "esriRoundNumberOfDecimals", 132 | "roundingValue" : 0 133 | }, 134 | "readOnly" : true, 135 | "visible" : true, 136 | "searchMode" : "Exact" 137 | }, 138 | { 139 | "type" : "CIMFieldDescription", 140 | "alias" : "SHAPE", 141 | "fieldName" : "SHAPE", 142 | "visible" : true, 143 | "searchMode" : "Exact" 144 | }, 145 | { 146 | "type" : "CIMFieldDescription", 147 | "alias" : "SHAPE.STArea()", 148 | "fieldName" : "SHAPE.STArea()", 149 | "numberFormat" : { 150 | "type" : "CIMNumericFormat", 151 | "alignmentOption" : "esriAlignRight", 152 | "alignmentWidth" : 12, 153 | "roundingOption" : "esriRoundNumberOfDecimals", 154 | "roundingValue" : 6 155 | }, 156 | "readOnly" : true, 157 | "visible" : true, 158 | "searchMode" : "Exact" 159 | }, 160 | { 161 | "type" : "CIMFieldDescription", 162 | "alias" : "SHAPE.STLength()", 163 | "fieldName" : "SHAPE.STLength()", 164 | "numberFormat" : { 165 | "type" : "CIMNumericFormat", 166 | "alignmentOption" : "esriAlignRight", 167 | "alignmentWidth" : 12, 168 | "roundingOption" : "esriRoundNumberOfDecimals", 169 | "roundingValue" : 6 170 | }, 171 | "readOnly" : true, 172 | "visible" : true, 173 | "searchMode" : "Exact" 174 | } 175 | ], 176 | "timeFields" : { 177 | "type" : "CIMTimeTableDefinition" 178 | }, 179 | "timeDefinition" : { 180 | "type" : "CIMTimeDataDefinition" 181 | }, 182 | "timeDisplayDefinition" : { 183 | "type" : "CIMTimeDisplayDefinition", 184 | "timeInterval" : 0, 185 | "timeIntervalUnits" : "esriTimeUnitsHours", 186 | "timeOffsetUnits" : "esriTimeUnitsYears" 187 | }, 188 | "dataConnection" : { 189 | "type" : "CIMStandardDataConnection", 190 | "workspaceConnectionString" : "", 191 | "workspaceFactory" : "SDE", 192 | "dataset" : "AGIS.va_bbflaeche", 193 | "datasetType" : "esriDTFeatureClass" 194 | }, 195 | "studyAreaSpatialRel" : "esriSpatialRelUndefined", 196 | "searchOrder" : "esriSearchOrderSpatial" 197 | }, 198 | "featureTemplates" : [ 199 | { 200 | "type" : "CIMRowTemplate", 201 | "name" : "Gebäude", 202 | "tags" : "Polygon", 203 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 204 | "excludedToolGUIDs" : [ 205 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 206 | "a281e635-0f22-47d4-a438-e4d29b920e22", 207 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 208 | ], 209 | "defaultValues" : { 210 | "type" : "PropertySet", 211 | "propertySetItems" : [ 212 | "art", 213 | "Gebaeude" 214 | ] 215 | } 216 | }, 217 | { 218 | "type" : "CIMRowTemplate", 219 | "name" : "Strasse, Weg", 220 | "tags" : "Polygon", 221 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 222 | "excludedToolGUIDs" : [ 223 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 224 | "a281e635-0f22-47d4-a438-e4d29b920e22", 225 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 226 | ], 227 | "defaultValues" : { 228 | "type" : "PropertySet", 229 | "propertySetItems" : [ 230 | "art", 231 | "befestigt.Strasse_Weg" 232 | ] 233 | } 234 | }, 235 | { 236 | "type" : "CIMRowTemplate", 237 | "name" : "Trottoir", 238 | "tags" : "Polygon", 239 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 240 | "excludedToolGUIDs" : [ 241 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 242 | "a281e635-0f22-47d4-a438-e4d29b920e22", 243 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 244 | ], 245 | "defaultValues" : { 246 | "type" : "PropertySet", 247 | "propertySetItems" : [ 248 | "art", 249 | "befestigt.Trottoir" 250 | ] 251 | } 252 | }, 253 | { 254 | "type" : "CIMRowTemplate", 255 | "name" : "Verkehrsinsel", 256 | "tags" : "Polygon", 257 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 258 | "excludedToolGUIDs" : [ 259 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 260 | "a281e635-0f22-47d4-a438-e4d29b920e22", 261 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 262 | ], 263 | "defaultValues" : { 264 | "type" : "PropertySet", 265 | "propertySetItems" : [ 266 | "art", 267 | "befestigt.Verkehrsinsel" 268 | ] 269 | } 270 | }, 271 | { 272 | "type" : "CIMRowTemplate", 273 | "name" : "Bahn", 274 | "tags" : "Polygon", 275 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 276 | "excludedToolGUIDs" : [ 277 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 278 | "a281e635-0f22-47d4-a438-e4d29b920e22", 279 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 280 | ], 281 | "defaultValues" : { 282 | "type" : "PropertySet", 283 | "propertySetItems" : [ 284 | "art", 285 | "befestigt.Bahn" 286 | ] 287 | } 288 | }, 289 | { 290 | "type" : "CIMRowTemplate", 291 | "name" : "Flugplatz", 292 | "tags" : "Polygon", 293 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 294 | "excludedToolGUIDs" : [ 295 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 296 | "a281e635-0f22-47d4-a438-e4d29b920e22", 297 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 298 | ], 299 | "defaultValues" : { 300 | "type" : "PropertySet", 301 | "propertySetItems" : [ 302 | "art", 303 | "befestigt.Flugplatz" 304 | ] 305 | } 306 | }, 307 | { 308 | "type" : "CIMRowTemplate", 309 | "name" : "Wasserbecken", 310 | "tags" : "Polygon", 311 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 312 | "excludedToolGUIDs" : [ 313 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 314 | "a281e635-0f22-47d4-a438-e4d29b920e22", 315 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 316 | ], 317 | "defaultValues" : { 318 | "type" : "PropertySet", 319 | "propertySetItems" : [ 320 | "art", 321 | "befestigt.Wasserbecken" 322 | ] 323 | } 324 | }, 325 | { 326 | "type" : "CIMRowTemplate", 327 | "name" : "übrige befestigte", 328 | "tags" : "Polygon", 329 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 330 | "excludedToolGUIDs" : [ 331 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 332 | "a281e635-0f22-47d4-a438-e4d29b920e22", 333 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 334 | ], 335 | "defaultValues" : { 336 | "type" : "PropertySet", 337 | "propertySetItems" : [ 338 | "art", 339 | "befestigt.uebrige_befestigte" 340 | ] 341 | } 342 | }, 343 | { 344 | "type" : "CIMRowTemplate", 345 | "name" : "Acker, Wiese, Weide", 346 | "tags" : "Polygon", 347 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 348 | "excludedToolGUIDs" : [ 349 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 350 | "a281e635-0f22-47d4-a438-e4d29b920e22", 351 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 352 | ], 353 | "defaultValues" : { 354 | "type" : "PropertySet", 355 | "propertySetItems" : [ 356 | "art", 357 | "humusiert.Acker_Wiese_Weide" 358 | ] 359 | } 360 | }, 361 | { 362 | "type" : "CIMRowTemplate", 363 | "name" : "Reben", 364 | "tags" : "Polygon", 365 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 366 | "excludedToolGUIDs" : [ 367 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 368 | "a281e635-0f22-47d4-a438-e4d29b920e22", 369 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 370 | ], 371 | "defaultValues" : { 372 | "type" : "PropertySet", 373 | "propertySetItems" : [ 374 | "art", 375 | "humusiert.Intensivkultur.Reben" 376 | ] 377 | } 378 | }, 379 | { 380 | "type" : "CIMRowTemplate", 381 | "name" : "übrige Intensivkultur", 382 | "tags" : "Polygon", 383 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 384 | "excludedToolGUIDs" : [ 385 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 386 | "a281e635-0f22-47d4-a438-e4d29b920e22", 387 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 388 | ], 389 | "defaultValues" : { 390 | "type" : "PropertySet", 391 | "propertySetItems" : [ 392 | "art", 393 | "humusiert.Intensivkultur.uebrige_Intensivkultur" 394 | ] 395 | } 396 | }, 397 | { 398 | "type" : "CIMRowTemplate", 399 | "name" : "Gartenanlage", 400 | "tags" : "Polygon", 401 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 402 | "excludedToolGUIDs" : [ 403 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 404 | "a281e635-0f22-47d4-a438-e4d29b920e22", 405 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 406 | ], 407 | "defaultValues" : { 408 | "type" : "PropertySet", 409 | "propertySetItems" : [ 410 | "art", 411 | "humusiert.Gartenanlage" 412 | ] 413 | } 414 | }, 415 | { 416 | "type" : "CIMRowTemplate", 417 | "name" : "Hoch, Flachmoor", 418 | "tags" : "Polygon", 419 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 420 | "excludedToolGUIDs" : [ 421 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 422 | "a281e635-0f22-47d4-a438-e4d29b920e22", 423 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 424 | ], 425 | "defaultValues" : { 426 | "type" : "PropertySet", 427 | "propertySetItems" : [ 428 | "art", 429 | "humusiert.Hoch_Flachmoor" 430 | ] 431 | } 432 | }, 433 | { 434 | "type" : "CIMRowTemplate", 435 | "name" : "stehendes Gewässer", 436 | "tags" : "Polygon", 437 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 438 | "excludedToolGUIDs" : [ 439 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 440 | "a281e635-0f22-47d4-a438-e4d29b920e22", 441 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 442 | ], 443 | "defaultValues" : { 444 | "type" : "PropertySet", 445 | "propertySetItems" : [ 446 | "art", 447 | "Gewaesser.stehendes" 448 | ] 449 | } 450 | }, 451 | { 452 | "type" : "CIMRowTemplate", 453 | "name" : "fliessendes Gewässer", 454 | "tags" : "Polygon", 455 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 456 | "excludedToolGUIDs" : [ 457 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 458 | "a281e635-0f22-47d4-a438-e4d29b920e22", 459 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 460 | ], 461 | "defaultValues" : { 462 | "type" : "PropertySet", 463 | "propertySetItems" : [ 464 | "art", 465 | "Gewaesser.fliessendes" 466 | ] 467 | } 468 | }, 469 | { 470 | "type" : "CIMRowTemplate", 471 | "name" : "Schilfgürtel", 472 | "tags" : "Polygon", 473 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 474 | "excludedToolGUIDs" : [ 475 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 476 | "a281e635-0f22-47d4-a438-e4d29b920e22", 477 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 478 | ], 479 | "defaultValues" : { 480 | "type" : "PropertySet", 481 | "propertySetItems" : [ 482 | "art", 483 | "Gewaesser.Schilfguertel" 484 | ] 485 | } 486 | }, 487 | { 488 | "type" : "CIMRowTemplate", 489 | "name" : "geschlossener Wald", 490 | "tags" : "Polygon", 491 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 492 | "excludedToolGUIDs" : [ 493 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 494 | "a281e635-0f22-47d4-a438-e4d29b920e22", 495 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 496 | ], 497 | "defaultValues" : { 498 | "type" : "PropertySet", 499 | "propertySetItems" : [ 500 | "art", 501 | "bestockt.geschlossener_Wald" 502 | ] 503 | } 504 | }, 505 | { 506 | "type" : "CIMRowTemplate", 507 | "name" : "übrige bestockte", 508 | "tags" : "Polygon", 509 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 510 | "excludedToolGUIDs" : [ 511 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 512 | "a281e635-0f22-47d4-a438-e4d29b920e22", 513 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 514 | ], 515 | "defaultValues" : { 516 | "type" : "PropertySet", 517 | "propertySetItems" : [ 518 | "art", 519 | "bestockt.uebrige_bestockte" 520 | ] 521 | } 522 | }, 523 | { 524 | "type" : "CIMRowTemplate", 525 | "name" : "Fels", 526 | "tags" : "Polygon", 527 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 528 | "excludedToolGUIDs" : [ 529 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 530 | "a281e635-0f22-47d4-a438-e4d29b920e22", 531 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 532 | ], 533 | "defaultValues" : { 534 | "type" : "PropertySet", 535 | "propertySetItems" : [ 536 | "art", 537 | "vegetationslos.Fels" 538 | ] 539 | } 540 | }, 541 | { 542 | "type" : "CIMRowTemplate", 543 | "name" : "Geröll, Sand", 544 | "tags" : "Polygon", 545 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 546 | "excludedToolGUIDs" : [ 547 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 548 | "a281e635-0f22-47d4-a438-e4d29b920e22", 549 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 550 | ], 551 | "defaultValues" : { 552 | "type" : "PropertySet", 553 | "propertySetItems" : [ 554 | "art", 555 | "vegetationslos.Geroell_Sand" 556 | ] 557 | } 558 | }, 559 | { 560 | "type" : "CIMRowTemplate", 561 | "name" : "Abbau, Deponie", 562 | "tags" : "Polygon", 563 | "defaultToolGUID" : "8f79967b-66a0-4a1c-b884-f44bc7e26921", 564 | "excludedToolGUIDs" : [ 565 | "6c6970a7-5ca9-448c-9c7d-0d716cd2ac64", 566 | "a281e635-0f22-47d4-a438-e4d29b920e22", 567 | "d304243a-5c3a-4ccc-b98b-93684b15fd83" 568 | ], 569 | "defaultValues" : { 570 | "type" : "PropertySet", 571 | "propertySetItems" : [ 572 | "art", 573 | "vegetationslos.Abbau_Deponie" 574 | ] 575 | } 576 | } 577 | ], 578 | "htmlPopupEnabled" : true, 579 | "htmlPopupFormat" : { 580 | "type" : "CIMHtmlPopupFormat", 581 | "htmlUseCodedDomainValues" : true, 582 | "htmlPresentationStyle" : "TwoColumnTable" 583 | }, 584 | "isFlattened" : true, 585 | "selectable" : true, 586 | "selectionSymbol" : { 587 | "type" : "CIMSymbolReference", 588 | "symbol" : { 589 | "type" : "CIMPolygonSymbol", 590 | "symbolLayers" : [ 591 | { 592 | "type" : "CIMSolidStroke", 593 | "enable" : true, 594 | "capStyle" : "Round", 595 | "joinStyle" : "Round", 596 | "lineStyle3D" : "Strip", 597 | "miterLimit" : 10, 598 | "width" : 2, 599 | "height3D" : 1, 600 | "anchor3D" : "Center", 601 | "color" : { 602 | "type" : "CIMRGBColor", 603 | "values" : [ 604 | 0, 605 | 255, 606 | 255, 607 | 100 608 | ] 609 | } 610 | } 611 | ], 612 | "angleAlignment" : "Map" 613 | } 614 | }, 615 | "featureCacheType" : "None", 616 | "displayFiltersType" : "ByScale", 617 | "featureBlendingMode" : "Alpha", 618 | "labelClasses" : [ 619 | { 620 | "type" : "CIMLabelClass", 621 | "expression" : "[ART]", 622 | "expressionEngine" : "VBScript", 623 | "featuresToLabel" : "AllVisibleFeatures", 624 | "maplexLabelPlacementProperties" : { 625 | "type" : "CIMMaplexLabelPlacementProperties", 626 | "featureType" : "Polygon", 627 | "avoidPolygonHoles" : true, 628 | "canOverrunFeature" : false, 629 | "canPlaceLabelOutsidePolygon" : false, 630 | "canRemoveOverlappingLabel" : true, 631 | "canStackLabel" : true, 632 | "centerLabelAnchorType" : "Symbol", 633 | "connectionType" : "Unambiguous", 634 | "constrainOffset" : "NoConstraint", 635 | "contourAlignmentType" : "Page", 636 | "contourLadderType" : "Straight", 637 | "contourMaximumAngle" : 90, 638 | "enableConnection" : true, 639 | "featureWeight" : 0, 640 | "fontHeightReductionLimit" : 4, 641 | "fontHeightReductionStep" : 0.5, 642 | "fontWidthReductionLimit" : 90, 643 | "fontWidthReductionStep" : 5, 644 | "graticuleAlignmentType" : "Straight", 645 | "keyNumberGroupName" : "Default", 646 | "labelBuffer" : 15, 647 | "labelLargestPolygon" : false, 648 | "labelPriority" : -1, 649 | "labelStackingProperties" : { 650 | "type" : "CIMMaplexLabelStackingProperties", 651 | "stackAlignment" : "ChooseBest", 652 | "maximumNumberOfLines" : 3, 653 | "minimumNumberOfCharsPerLine" : 3, 654 | "maximumNumberOfCharsPerLine" : 24, 655 | "separators" : [ 656 | { 657 | "type" : "CIMMaplexStackingSeparator", 658 | "separator" : " ", 659 | "splitAfter" : true 660 | }, 661 | { 662 | "type" : "CIMMaplexStackingSeparator", 663 | "separator" : ",", 664 | "visible" : true, 665 | "splitAfter" : true 666 | } 667 | ], 668 | "trimStackingSeparators" : true 669 | }, 670 | "lineFeatureType" : "General", 671 | "linePlacementMethod" : "OffsetCurvedFromLine", 672 | "maximumLabelOverrun" : 36, 673 | "maximumLabelOverrunUnit" : "Point", 674 | "minimumFeatureSizeUnit" : "Map", 675 | "multiPartOption" : "OneLabelPerPart", 676 | "offsetAlongLineProperties" : { 677 | "type" : "CIMMaplexOffsetAlongLineProperties", 678 | "placementMethod" : "BestPositionAlongLine", 679 | "labelAnchorPoint" : "CenterOfLabel", 680 | "distanceUnit" : "Percentage", 681 | "useLineDirection" : true 682 | }, 683 | "pointExternalZonePriorities" : { 684 | "type" : "CIMMaplexExternalZonePriorities", 685 | "aboveLeft" : 4, 686 | "aboveCenter" : 2, 687 | "aboveRight" : 1, 688 | "centerRight" : 3, 689 | "belowRight" : 5, 690 | "belowCenter" : 7, 691 | "belowLeft" : 8, 692 | "centerLeft" : 6 693 | }, 694 | "pointPlacementMethod" : "AroundPoint", 695 | "polygonAnchorPointType" : "GeometricCenter", 696 | "polygonBoundaryWeight" : 0, 697 | "polygonExternalZones" : { 698 | "type" : "CIMMaplexExternalZonePriorities", 699 | "aboveLeft" : 4, 700 | "aboveCenter" : 2, 701 | "aboveRight" : 1, 702 | "centerRight" : 3, 703 | "belowRight" : 5, 704 | "belowCenter" : 7, 705 | "belowLeft" : 8, 706 | "centerLeft" : 6 707 | }, 708 | "polygonFeatureType" : "General", 709 | "polygonInternalZones" : { 710 | "type" : "CIMMaplexInternalZonePriorities", 711 | "center" : 1 712 | }, 713 | "polygonPlacementMethod" : "StraightInPolygon", 714 | "primaryOffset" : 1, 715 | "primaryOffsetUnit" : "Point", 716 | "removeAmbiguousLabels" : "All", 717 | "removeExtraWhiteSpace" : true, 718 | "repetitionIntervalUnit" : "Map", 719 | "rotationProperties" : { 720 | "type" : "CIMMaplexRotationProperties", 721 | "rotationType" : "Arithmetic", 722 | "alignmentType" : "Straight" 723 | }, 724 | "secondaryOffset" : 100, 725 | "secondaryOffsetUnit" : "Percentage", 726 | "strategyPriorities" : { 727 | "type" : "CIMMaplexStrategyPriorities", 728 | "stacking" : 1, 729 | "overrun" : 2, 730 | "fontCompression" : 3, 731 | "fontReduction" : 4, 732 | "abbreviation" : 5 733 | }, 734 | "thinDuplicateLabels" : true, 735 | "thinningDistanceUnit" : "Point", 736 | "truncationMarkerCharacter" : ".", 737 | "truncationMinimumLength" : 1, 738 | "truncationPreferredCharacters" : "aeiou", 739 | "polygonAnchorPointPerimeterInsetUnit" : "Point" 740 | }, 741 | "minimumScale" : 1501, 742 | "name" : "Standard", 743 | "priority" : 3, 744 | "standardLabelPlacementProperties" : { 745 | "type" : "CIMStandardLabelPlacementProperties", 746 | "featureType" : "Line", 747 | "featureWeight" : "None", 748 | "labelWeight" : "High", 749 | "numLabelsOption" : "OneLabelPerName", 750 | "lineLabelPosition" : { 751 | "type" : "CIMStandardLineLabelPosition", 752 | "above" : true, 753 | "inLine" : true, 754 | "parallel" : true 755 | }, 756 | "lineLabelPriorities" : { 757 | "type" : "CIMStandardLineLabelPriorities", 758 | "aboveStart" : 3, 759 | "aboveAlong" : 3, 760 | "aboveEnd" : 3, 761 | "centerStart" : 3, 762 | "centerAlong" : 3, 763 | "centerEnd" : 3, 764 | "belowStart" : 3, 765 | "belowAlong" : 3, 766 | "belowEnd" : 3 767 | }, 768 | "pointPlacementMethod" : "AroundPoint", 769 | "pointPlacementPriorities" : { 770 | "type" : "CIMStandardPointPlacementPriorities", 771 | "aboveLeft" : 2, 772 | "aboveCenter" : 2, 773 | "aboveRight" : 1, 774 | "centerLeft" : 3, 775 | "centerRight" : 2, 776 | "belowLeft" : 3, 777 | "belowCenter" : 3, 778 | "belowRight" : 2 779 | }, 780 | "rotationType" : "Arithmetic", 781 | "polygonPlacementMethod" : "AlwaysHorizontal" 782 | }, 783 | "textSymbol" : { 784 | "type" : "CIMSymbolReference", 785 | "symbol" : { 786 | "type" : "CIMTextSymbol", 787 | "blockProgression" : "TTB", 788 | "compatibilityMode" : true, 789 | "depth3D" : 1, 790 | "drawSoftHyphen" : true, 791 | "extrapolateBaselines" : true, 792 | "flipAngle" : 90, 793 | "fontEffects" : "Normal", 794 | "fontEncoding" : "Unicode", 795 | "fontFamilyName" : "Cadastra", 796 | "fontStyleName" : "Regular", 797 | "fontType" : "Unspecified", 798 | "haloSize" : 1, 799 | "height" : 6, 800 | "hinting" : "Default", 801 | "horizontalAlignment" : "Left", 802 | "kerning" : true, 803 | "letterWidth" : 100, 804 | "ligatures" : true, 805 | "lineGapType" : "ExtraLeading", 806 | "shadowColor" : { 807 | "type" : "CIMRGBColor", 808 | "values" : [ 809 | 0, 810 | 0, 811 | 0, 812 | 100 813 | ] 814 | }, 815 | "symbol" : { 816 | "type" : "CIMPolygonSymbol", 817 | "symbolLayers" : [ 818 | { 819 | "type" : "CIMSolidFill", 820 | "enable" : true, 821 | "color" : { 822 | "type" : "CIMRGBColor", 823 | "values" : [ 824 | 0, 825 | 0, 826 | 0, 827 | 100 828 | ] 829 | } 830 | } 831 | ], 832 | "angleAlignment" : "Map" 833 | }, 834 | "textCase" : "Normal", 835 | "textDirection" : "LTR", 836 | "verticalAlignment" : "Baseline", 837 | "verticalGlyphOrientation" : "Right", 838 | "wordSpacing" : 100, 839 | "billboardMode3D" : "FaceNearPlane" 840 | } 841 | }, 842 | "useCodedValue" : true, 843 | "whereClause" : "ART = 'Gebaeude'", 844 | "iD" : -1 845 | } 846 | ], 847 | "renderer" : { 848 | "type" : "CIMUniqueValueRenderer", 849 | "sampleSize" : 10000, 850 | "colorRamp" : { 851 | "type" : "CIMRandomHSVColorRamp", 852 | "colorSpace" : { 853 | "type" : "CIMICCColorSpace", 854 | "url" : "Default RGB" 855 | }, 856 | "maxH" : 360, 857 | "minS" : 15, 858 | "maxS" : 30, 859 | "minV" : 99, 860 | "maxV" : 100, 861 | "minAlpha" : 100, 862 | "maxAlpha" : 100 863 | }, 864 | "defaultLabel" : "", 865 | "defaultSymbol" : { 866 | "type" : "CIMSymbolReference", 867 | "symbol" : { 868 | "type" : "CIMPolygonSymbol", 869 | "symbolLayers" : [ 870 | { 871 | "type" : "CIMSolidStroke", 872 | "enable" : true, 873 | "capStyle" : "Round", 874 | "joinStyle" : "Round", 875 | "lineStyle3D" : "Strip", 876 | "miterLimit" : 10, 877 | "width" : 0.56692799999999988, 878 | "height3D" : 1, 879 | "anchor3D" : "Center", 880 | "color" : { 881 | "type" : "CIMRGBColor", 882 | "values" : [ 883 | 0, 884 | 0, 885 | 0, 886 | 100 887 | ] 888 | } 889 | } 890 | ], 891 | "angleAlignment" : "Map" 892 | } 893 | }, 894 | "defaultSymbolPatch" : "Default", 895 | "fields" : [ 896 | "Art" 897 | ], 898 | "groups" : [ 899 | { 900 | "type" : "CIMUniqueValueGroup", 901 | "classes" : [ 902 | { 903 | "type" : "CIMUniqueValueClass", 904 | "label" : "Gebäude", 905 | "patch" : "Default", 906 | "symbol" : { 907 | "type" : "CIMSymbolReference", 908 | "symbol" : { 909 | "type" : "CIMPolygonSymbol", 910 | "symbolLayers" : [ 911 | { 912 | "type" : "CIMSolidStroke", 913 | "enable" : true, 914 | "capStyle" : "Round", 915 | "joinStyle" : "Round", 916 | "lineStyle3D" : "Strip", 917 | "miterLimit" : 10, 918 | "width" : 0.59999999999999998, 919 | "height3D" : 1, 920 | "anchor3D" : "Center", 921 | "color" : { 922 | "type" : "CIMRGBColor", 923 | "values" : [ 924 | 0, 925 | 0, 926 | 0, 927 | 100 928 | ] 929 | } 930 | }, 931 | { 932 | "type" : "CIMSolidFill", 933 | "enable" : true, 934 | "color" : { 935 | "type" : "CIMRGBColor", 936 | "values" : [ 937 | 178, 938 | 178, 939 | 178, 940 | 100 941 | ] 942 | } 943 | } 944 | ], 945 | "angleAlignment" : "Map" 946 | } 947 | }, 948 | "values" : [ 949 | { 950 | "type" : "CIMUniqueValue", 951 | "fieldValues" : [ 952 | "Gebaeude" 953 | ] 954 | } 955 | ], 956 | "visible" : true 957 | }, 958 | { 959 | "type" : "CIMUniqueValueClass", 960 | "label" : "Strasse, Weg", 961 | "patch" : "Default", 962 | "symbol" : { 963 | "type" : "CIMSymbolReference", 964 | "symbol" : { 965 | "type" : "CIMPolygonSymbol", 966 | "symbolLayers" : [ 967 | { 968 | "type" : "CIMSolidStroke", 969 | "enable" : true, 970 | "capStyle" : "Round", 971 | "joinStyle" : "Round", 972 | "lineStyle3D" : "Strip", 973 | "miterLimit" : 10, 974 | "width" : 0.59999999999999998, 975 | "height3D" : 1, 976 | "anchor3D" : "Center", 977 | "color" : { 978 | "type" : "CIMRGBColor", 979 | "values" : [ 980 | 0, 981 | 0, 982 | 0, 983 | 100 984 | ] 985 | } 986 | }, 987 | { 988 | "type" : "CIMSolidFill", 989 | "enable" : false, 990 | "color" : { 991 | "type" : "CIMRGBColor", 992 | "values" : [ 993 | 255, 994 | 255, 995 | 255, 996 | 0 997 | ] 998 | } 999 | } 1000 | ], 1001 | "angleAlignment" : "Map" 1002 | } 1003 | }, 1004 | "values" : [ 1005 | { 1006 | "type" : "CIMUniqueValue", 1007 | "fieldValues" : [ 1008 | "befestigt.Strasse_Weg" 1009 | ] 1010 | } 1011 | ], 1012 | "visible" : true 1013 | }, 1014 | { 1015 | "type" : "CIMUniqueValueClass", 1016 | "label" : "Trottoir", 1017 | "patch" : "Default", 1018 | "symbol" : { 1019 | "type" : "CIMSymbolReference", 1020 | "symbol" : { 1021 | "type" : "CIMPolygonSymbol", 1022 | "symbolLayers" : [ 1023 | { 1024 | "type" : "CIMSolidStroke", 1025 | "enable" : true, 1026 | "capStyle" : "Round", 1027 | "joinStyle" : "Round", 1028 | "lineStyle3D" : "Strip", 1029 | "miterLimit" : 10, 1030 | "width" : 0.59999999999999998, 1031 | "height3D" : 1, 1032 | "anchor3D" : "Center", 1033 | "color" : { 1034 | "type" : "CIMRGBColor", 1035 | "values" : [ 1036 | 0, 1037 | 0, 1038 | 0, 1039 | 100 1040 | ] 1041 | } 1042 | }, 1043 | { 1044 | "type" : "CIMSolidFill", 1045 | "enable" : false, 1046 | "color" : { 1047 | "type" : "CIMRGBColor", 1048 | "values" : [ 1049 | 255, 1050 | 255, 1051 | 255, 1052 | 0 1053 | ] 1054 | } 1055 | } 1056 | ], 1057 | "angleAlignment" : "Map" 1058 | } 1059 | }, 1060 | "values" : [ 1061 | { 1062 | "type" : "CIMUniqueValue", 1063 | "fieldValues" : [ 1064 | "befestigt.Trottoir" 1065 | ] 1066 | } 1067 | ], 1068 | "visible" : true 1069 | }, 1070 | { 1071 | "type" : "CIMUniqueValueClass", 1072 | "label" : "Verkehrsinsel", 1073 | "patch" : "Default", 1074 | "symbol" : { 1075 | "type" : "CIMSymbolReference", 1076 | "symbol" : { 1077 | "type" : "CIMPolygonSymbol", 1078 | "symbolLayers" : [ 1079 | { 1080 | "type" : "CIMSolidStroke", 1081 | "enable" : true, 1082 | "capStyle" : "Round", 1083 | "joinStyle" : "Round", 1084 | "lineStyle3D" : "Strip", 1085 | "miterLimit" : 10, 1086 | "width" : 0.59999999999999998, 1087 | "height3D" : 1, 1088 | "anchor3D" : "Center", 1089 | "color" : { 1090 | "type" : "CIMRGBColor", 1091 | "values" : [ 1092 | 0, 1093 | 0, 1094 | 0, 1095 | 100 1096 | ] 1097 | } 1098 | }, 1099 | { 1100 | "type" : "CIMSolidFill", 1101 | "enable" : false, 1102 | "color" : { 1103 | "type" : "CIMRGBColor", 1104 | "values" : [ 1105 | 255, 1106 | 255, 1107 | 255, 1108 | 0 1109 | ] 1110 | } 1111 | } 1112 | ], 1113 | "angleAlignment" : "Map" 1114 | } 1115 | }, 1116 | "values" : [ 1117 | { 1118 | "type" : "CIMUniqueValue", 1119 | "fieldValues" : [ 1120 | "befestigt.Verkehrsinsel" 1121 | ] 1122 | } 1123 | ], 1124 | "visible" : true 1125 | }, 1126 | { 1127 | "type" : "CIMUniqueValueClass", 1128 | "label" : "Bahn", 1129 | "patch" : "Default", 1130 | "symbol" : { 1131 | "type" : "CIMSymbolReference", 1132 | "symbol" : { 1133 | "type" : "CIMPolygonSymbol", 1134 | "symbolLayers" : [ 1135 | { 1136 | "type" : "CIMSolidStroke", 1137 | "effects" : [ 1138 | { 1139 | "type" : "CIMGeometricEffectDashes", 1140 | "dashTemplate" : [ 1141 | 4.0216747100160877, 1142 | 1.0054186775040219 1143 | ], 1144 | "lineDashEnding" : "NoConstraint", 1145 | "controlPointEnding" : "NoConstraint" 1146 | } 1147 | ], 1148 | "enable" : true, 1149 | "capStyle" : "Butt", 1150 | "joinStyle" : "Miter", 1151 | "lineStyle3D" : "Strip", 1152 | "miterLimit" : 10, 1153 | "width" : 0.59999999999999998, 1154 | "height3D" : 1, 1155 | "anchor3D" : "Center", 1156 | "color" : { 1157 | "type" : "CIMRGBColor", 1158 | "values" : [ 1159 | 0, 1160 | 0, 1161 | 0, 1162 | 100 1163 | ] 1164 | } 1165 | }, 1166 | { 1167 | "type" : "CIMSolidFill", 1168 | "enable" : false, 1169 | "color" : { 1170 | "type" : "CIMRGBColor", 1171 | "values" : [ 1172 | 255, 1173 | 255, 1174 | 255, 1175 | 0 1176 | ] 1177 | } 1178 | } 1179 | ], 1180 | "angleAlignment" : "Map" 1181 | } 1182 | }, 1183 | "values" : [ 1184 | { 1185 | "type" : "CIMUniqueValue", 1186 | "fieldValues" : [ 1187 | "befestigt.Bahn" 1188 | ] 1189 | } 1190 | ], 1191 | "visible" : true 1192 | }, 1193 | { 1194 | "type" : "CIMUniqueValueClass", 1195 | "label" : "Flugplatz", 1196 | "patch" : "Default", 1197 | "symbol" : { 1198 | "type" : "CIMSymbolReference", 1199 | "symbol" : { 1200 | "type" : "CIMPolygonSymbol", 1201 | "symbolLayers" : [ 1202 | { 1203 | "type" : "CIMSolidStroke", 1204 | "effects" : [ 1205 | { 1206 | "type" : "CIMGeometricEffectDashes", 1207 | "dashTemplate" : [ 1208 | 4.0216747100160877, 1209 | 1.0054186775040219 1210 | ], 1211 | "lineDashEnding" : "NoConstraint", 1212 | "controlPointEnding" : "NoConstraint" 1213 | } 1214 | ], 1215 | "enable" : true, 1216 | "capStyle" : "Butt", 1217 | "joinStyle" : "Miter", 1218 | "lineStyle3D" : "Strip", 1219 | "miterLimit" : 10, 1220 | "width" : 0.59999999999999998, 1221 | "height3D" : 1, 1222 | "anchor3D" : "Center", 1223 | "color" : { 1224 | "type" : "CIMRGBColor", 1225 | "values" : [ 1226 | 0, 1227 | 0, 1228 | 0, 1229 | 100 1230 | ] 1231 | } 1232 | }, 1233 | { 1234 | "type" : "CIMSolidFill", 1235 | "enable" : false, 1236 | "color" : { 1237 | "type" : "CIMRGBColor", 1238 | "values" : [ 1239 | 255, 1240 | 255, 1241 | 255, 1242 | 0 1243 | ] 1244 | } 1245 | } 1246 | ], 1247 | "angleAlignment" : "Map" 1248 | } 1249 | }, 1250 | "values" : [ 1251 | { 1252 | "type" : "CIMUniqueValue", 1253 | "fieldValues" : [ 1254 | "befestigt.Flugplatz" 1255 | ] 1256 | } 1257 | ], 1258 | "visible" : true 1259 | }, 1260 | { 1261 | "type" : "CIMUniqueValueClass", 1262 | "label" : "Wasserbecken", 1263 | "patch" : "Default", 1264 | "symbol" : { 1265 | "type" : "CIMSymbolReference", 1266 | "symbol" : { 1267 | "type" : "CIMPolygonSymbol", 1268 | "symbolLayers" : [ 1269 | { 1270 | "type" : "CIMSolidStroke", 1271 | "enable" : true, 1272 | "capStyle" : "Round", 1273 | "joinStyle" : "Round", 1274 | "lineStyle3D" : "Strip", 1275 | "miterLimit" : 10, 1276 | "width" : 0.59999999999999998, 1277 | "height3D" : 1, 1278 | "anchor3D" : "Center", 1279 | "color" : { 1280 | "type" : "CIMRGBColor", 1281 | "values" : [ 1282 | 0, 1283 | 0, 1284 | 0, 1285 | 100 1286 | ] 1287 | } 1288 | }, 1289 | { 1290 | "type" : "CIMSolidFill", 1291 | "enable" : false, 1292 | "color" : { 1293 | "type" : "CIMRGBColor", 1294 | "values" : [ 1295 | 255, 1296 | 255, 1297 | 255, 1298 | 0 1299 | ] 1300 | } 1301 | } 1302 | ], 1303 | "angleAlignment" : "Map" 1304 | } 1305 | }, 1306 | "values" : [ 1307 | { 1308 | "type" : "CIMUniqueValue", 1309 | "fieldValues" : [ 1310 | "befestigt.Wasserbecken" 1311 | ] 1312 | } 1313 | ], 1314 | "visible" : true 1315 | }, 1316 | { 1317 | "type" : "CIMUniqueValueClass", 1318 | "label" : "übrige befestigte", 1319 | "patch" : "Default", 1320 | "symbol" : { 1321 | "type" : "CIMSymbolReference", 1322 | "symbol" : { 1323 | "type" : "CIMPolygonSymbol", 1324 | "symbolLayers" : [ 1325 | { 1326 | "type" : "CIMSolidStroke", 1327 | "effects" : [ 1328 | { 1329 | "type" : "CIMGeometricEffectDashes", 1330 | "dashTemplate" : [ 1331 | 4.0216747100160877, 1332 | 1.0054186775040219 1333 | ], 1334 | "lineDashEnding" : "NoConstraint", 1335 | "controlPointEnding" : "NoConstraint" 1336 | } 1337 | ], 1338 | "enable" : true, 1339 | "capStyle" : "Butt", 1340 | "joinStyle" : "Miter", 1341 | "lineStyle3D" : "Strip", 1342 | "miterLimit" : 10, 1343 | "width" : 0.59999999999999998, 1344 | "height3D" : 1, 1345 | "anchor3D" : "Center", 1346 | "color" : { 1347 | "type" : "CIMRGBColor", 1348 | "values" : [ 1349 | 0, 1350 | 0, 1351 | 0, 1352 | 100 1353 | ] 1354 | } 1355 | }, 1356 | { 1357 | "type" : "CIMSolidFill", 1358 | "enable" : false, 1359 | "color" : { 1360 | "type" : "CIMRGBColor", 1361 | "values" : [ 1362 | 255, 1363 | 255, 1364 | 255, 1365 | 0 1366 | ] 1367 | } 1368 | } 1369 | ], 1370 | "angleAlignment" : "Map" 1371 | } 1372 | }, 1373 | "values" : [ 1374 | { 1375 | "type" : "CIMUniqueValue", 1376 | "fieldValues" : [ 1377 | "befestigt.uebrige_befestigte" 1378 | ] 1379 | } 1380 | ], 1381 | "visible" : true 1382 | }, 1383 | { 1384 | "type" : "CIMUniqueValueClass", 1385 | "label" : "Acker, Wiese, Weide", 1386 | "patch" : "Default", 1387 | "symbol" : { 1388 | "type" : "CIMSymbolReference", 1389 | "symbol" : { 1390 | "type" : "CIMPolygonSymbol", 1391 | "symbolLayers" : [ 1392 | { 1393 | "type" : "CIMSolidStroke", 1394 | "effects" : [ 1395 | { 1396 | "type" : "CIMGeometricEffectDashes", 1397 | "dashTemplate" : [ 1398 | 4.0216747100160877, 1399 | 1.0054186775040219 1400 | ], 1401 | "lineDashEnding" : "NoConstraint", 1402 | "controlPointEnding" : "NoConstraint" 1403 | } 1404 | ], 1405 | "enable" : true, 1406 | "capStyle" : "Butt", 1407 | "joinStyle" : "Miter", 1408 | "lineStyle3D" : "Strip", 1409 | "miterLimit" : 10, 1410 | "width" : 0.59999999999999998, 1411 | "height3D" : 1, 1412 | "anchor3D" : "Center", 1413 | "color" : { 1414 | "type" : "CIMRGBColor", 1415 | "values" : [ 1416 | 0, 1417 | 0, 1418 | 0, 1419 | 100 1420 | ] 1421 | } 1422 | }, 1423 | { 1424 | "type" : "CIMSolidFill", 1425 | "enable" : false, 1426 | "color" : { 1427 | "type" : "CIMRGBColor", 1428 | "values" : [ 1429 | 255, 1430 | 255, 1431 | 255, 1432 | 0 1433 | ] 1434 | } 1435 | } 1436 | ], 1437 | "angleAlignment" : "Map" 1438 | } 1439 | }, 1440 | "values" : [ 1441 | { 1442 | "type" : "CIMUniqueValue", 1443 | "fieldValues" : [ 1444 | "humusiert.Acker_Wiese_Weide" 1445 | ] 1446 | } 1447 | ], 1448 | "visible" : true 1449 | }, 1450 | { 1451 | "type" : "CIMUniqueValueClass", 1452 | "label" : "Reben", 1453 | "patch" : "Default", 1454 | "symbol" : { 1455 | "type" : "CIMSymbolReference", 1456 | "symbol" : { 1457 | "type" : "CIMPolygonSymbol", 1458 | "symbolLayers" : [ 1459 | { 1460 | "type" : "CIMSolidStroke", 1461 | "effects" : [ 1462 | { 1463 | "type" : "CIMGeometricEffectDashes", 1464 | "dashTemplate" : [ 1465 | 4.0216747100160877, 1466 | 1.0054186775040219 1467 | ], 1468 | "lineDashEnding" : "NoConstraint", 1469 | "controlPointEnding" : "NoConstraint" 1470 | } 1471 | ], 1472 | "enable" : true, 1473 | "capStyle" : "Butt", 1474 | "joinStyle" : "Miter", 1475 | "lineStyle3D" : "Strip", 1476 | "miterLimit" : 10, 1477 | "width" : 0.59999999999999998, 1478 | "height3D" : 1, 1479 | "anchor3D" : "Center", 1480 | "color" : { 1481 | "type" : "CIMRGBColor", 1482 | "values" : [ 1483 | 0, 1484 | 0, 1485 | 0, 1486 | 100 1487 | ] 1488 | } 1489 | }, 1490 | { 1491 | "type" : "CIMCharacterMarker", 1492 | "enable" : true, 1493 | "colorLocked" : true, 1494 | "anchorPointUnits" : "Relative", 1495 | "dominantSizeAxis3D" : "Y", 1496 | "size" : 8.5, 1497 | "billboardMode3D" : "FaceNearPlane", 1498 | "markerPlacement" : { 1499 | "type" : "CIMMarkerPlacementInsidePolygon", 1500 | "gridType" : "Fixed", 1501 | "randomness" : 100, 1502 | "seed" : 22698, 1503 | "stepX" : 28.300000000000001, 1504 | "stepY" : 28.300000000000001, 1505 | "clipping" : "ClipAtBoundary" 1506 | }, 1507 | "characterIndex" : 98, 1508 | "fontFamilyName" : "CadastraSymbol", 1509 | "fontStyleName" : "Regular", 1510 | "fontType" : "Unspecified", 1511 | "scaleX" : 1, 1512 | "symbol" : { 1513 | "type" : "CIMPolygonSymbol", 1514 | "symbolLayers" : [ 1515 | { 1516 | "type" : "CIMSolidStroke", 1517 | "enable" : true, 1518 | "capStyle" : "Round", 1519 | "joinStyle" : "Round", 1520 | "lineStyle3D" : "Strip", 1521 | "miterLimit" : 4, 1522 | "width" : 0, 1523 | "height3D" : 1, 1524 | "anchor3D" : "Center", 1525 | "color" : { 1526 | "type" : "CIMRGBColor", 1527 | "values" : [ 1528 | 0, 1529 | 0, 1530 | 0, 1531 | 0 1532 | ] 1533 | } 1534 | }, 1535 | { 1536 | "type" : "CIMSolidFill", 1537 | "enable" : true, 1538 | "color" : { 1539 | "type" : "CIMRGBColor", 1540 | "values" : [ 1541 | 130, 1542 | 130, 1543 | 130, 1544 | 100 1545 | ] 1546 | } 1547 | } 1548 | ], 1549 | "angleAlignment" : "Map" 1550 | }, 1551 | "respectFrame" : false 1552 | }, 1553 | { 1554 | "type" : "CIMSolidFill", 1555 | "enable" : false, 1556 | "colorLocked" : true, 1557 | "color" : { 1558 | "type" : "CIMRGBColor", 1559 | "values" : [ 1560 | 255, 1561 | 255, 1562 | 255, 1563 | 0 1564 | ] 1565 | } 1566 | } 1567 | ], 1568 | "angleAlignment" : "Map" 1569 | } 1570 | }, 1571 | "values" : [ 1572 | { 1573 | "type" : "CIMUniqueValue", 1574 | "fieldValues" : [ 1575 | "humusiert.Intensivkultur.Reben" 1576 | ] 1577 | } 1578 | ], 1579 | "visible" : true 1580 | }, 1581 | { 1582 | "type" : "CIMUniqueValueClass", 1583 | "label" : "übrige Intensivkultur", 1584 | "patch" : "Default", 1585 | "symbol" : { 1586 | "type" : "CIMSymbolReference", 1587 | "symbol" : { 1588 | "type" : "CIMPolygonSymbol", 1589 | "symbolLayers" : [ 1590 | { 1591 | "type" : "CIMSolidStroke", 1592 | "effects" : [ 1593 | { 1594 | "type" : "CIMGeometricEffectDashes", 1595 | "dashTemplate" : [ 1596 | 4.0216747100160877, 1597 | 1.0054186775040219 1598 | ], 1599 | "lineDashEnding" : "NoConstraint", 1600 | "controlPointEnding" : "NoConstraint" 1601 | } 1602 | ], 1603 | "enable" : true, 1604 | "capStyle" : "Butt", 1605 | "joinStyle" : "Miter", 1606 | "lineStyle3D" : "Strip", 1607 | "miterLimit" : 10, 1608 | "width" : 0.59999999999999998, 1609 | "height3D" : 1, 1610 | "anchor3D" : "Center", 1611 | "color" : { 1612 | "type" : "CIMRGBColor", 1613 | "values" : [ 1614 | 0, 1615 | 0, 1616 | 0, 1617 | 100 1618 | ] 1619 | } 1620 | }, 1621 | { 1622 | "type" : "CIMSolidFill", 1623 | "enable" : false, 1624 | "color" : { 1625 | "type" : "CIMRGBColor", 1626 | "values" : [ 1627 | 255, 1628 | 255, 1629 | 255, 1630 | 0 1631 | ] 1632 | } 1633 | } 1634 | ], 1635 | "angleAlignment" : "Map" 1636 | } 1637 | }, 1638 | "values" : [ 1639 | { 1640 | "type" : "CIMUniqueValue", 1641 | "fieldValues" : [ 1642 | "humusiert.Intensivkultur.uebrige_Intensivkultur" 1643 | ] 1644 | } 1645 | ], 1646 | "visible" : true 1647 | }, 1648 | { 1649 | "type" : "CIMUniqueValueClass", 1650 | "label" : "Gartenanlage", 1651 | "patch" : "Default", 1652 | "symbol" : { 1653 | "type" : "CIMSymbolReference", 1654 | "symbol" : { 1655 | "type" : "CIMPolygonSymbol", 1656 | "symbolLayers" : [ 1657 | { 1658 | "type" : "CIMSolidStroke", 1659 | "effects" : [ 1660 | { 1661 | "type" : "CIMGeometricEffectDashes", 1662 | "dashTemplate" : [ 1663 | 4.0216747100160877, 1664 | 1.0054186775040219 1665 | ], 1666 | "lineDashEnding" : "NoConstraint", 1667 | "controlPointEnding" : "NoConstraint" 1668 | } 1669 | ], 1670 | "enable" : true, 1671 | "capStyle" : "Butt", 1672 | "joinStyle" : "Miter", 1673 | "lineStyle3D" : "Strip", 1674 | "miterLimit" : 10, 1675 | "width" : 0.59999999999999998, 1676 | "height3D" : 1, 1677 | "anchor3D" : "Center", 1678 | "color" : { 1679 | "type" : "CIMRGBColor", 1680 | "values" : [ 1681 | 0, 1682 | 0, 1683 | 0, 1684 | 100 1685 | ] 1686 | } 1687 | }, 1688 | { 1689 | "type" : "CIMSolidFill", 1690 | "enable" : false, 1691 | "color" : { 1692 | "type" : "CIMRGBColor", 1693 | "values" : [ 1694 | 255, 1695 | 255, 1696 | 255, 1697 | 0 1698 | ] 1699 | } 1700 | } 1701 | ], 1702 | "angleAlignment" : "Map" 1703 | } 1704 | }, 1705 | "values" : [ 1706 | { 1707 | "type" : "CIMUniqueValue", 1708 | "fieldValues" : [ 1709 | "humusiert.Gartenanlage" 1710 | ] 1711 | } 1712 | ], 1713 | "visible" : true 1714 | }, 1715 | { 1716 | "type" : "CIMUniqueValueClass", 1717 | "label" : "Hoch, Flachmoor", 1718 | "patch" : "Default", 1719 | "symbol" : { 1720 | "type" : "CIMSymbolReference", 1721 | "symbol" : { 1722 | "type" : "CIMPolygonSymbol", 1723 | "symbolLayers" : [ 1724 | { 1725 | "type" : "CIMSolidStroke", 1726 | "effects" : [ 1727 | { 1728 | "type" : "CIMGeometricEffectDashes", 1729 | "dashTemplate" : [ 1730 | 4.0216747100160877, 1731 | 1.0054186775040219 1732 | ], 1733 | "lineDashEnding" : "NoConstraint", 1734 | "controlPointEnding" : "NoConstraint" 1735 | } 1736 | ], 1737 | "enable" : true, 1738 | "capStyle" : "Butt", 1739 | "joinStyle" : "Miter", 1740 | "lineStyle3D" : "Strip", 1741 | "miterLimit" : 10, 1742 | "width" : 0.59999999999999998, 1743 | "height3D" : 1, 1744 | "anchor3D" : "Center", 1745 | "color" : { 1746 | "type" : "CIMRGBColor", 1747 | "values" : [ 1748 | 0, 1749 | 0, 1750 | 0, 1751 | 100 1752 | ] 1753 | } 1754 | }, 1755 | { 1756 | "type" : "CIMCharacterMarker", 1757 | "enable" : true, 1758 | "anchorPointUnits" : "Relative", 1759 | "dominantSizeAxis3D" : "Y", 1760 | "size" : 11.5, 1761 | "billboardMode3D" : "FaceNearPlane", 1762 | "markerPlacement" : { 1763 | "type" : "CIMMarkerPlacementInsidePolygon", 1764 | "gridType" : "Fixed", 1765 | "randomness" : 100, 1766 | "seed" : 22698, 1767 | "stepX" : 28.300000000000001, 1768 | "stepY" : 28.300000000000001, 1769 | "clipping" : "ClipAtBoundary" 1770 | }, 1771 | "characterIndex" : 100, 1772 | "fontFamilyName" : "CadastraSymbol", 1773 | "fontStyleName" : "Regular", 1774 | "fontType" : "Unspecified", 1775 | "scaleX" : 1, 1776 | "symbol" : { 1777 | "type" : "CIMPolygonSymbol", 1778 | "symbolLayers" : [ 1779 | { 1780 | "type" : "CIMSolidStroke", 1781 | "enable" : true, 1782 | "capStyle" : "Round", 1783 | "joinStyle" : "Round", 1784 | "lineStyle3D" : "Strip", 1785 | "miterLimit" : 4, 1786 | "width" : 0, 1787 | "height3D" : 1, 1788 | "anchor3D" : "Center", 1789 | "color" : { 1790 | "type" : "CIMRGBColor", 1791 | "values" : [ 1792 | 0, 1793 | 0, 1794 | 0, 1795 | 0 1796 | ] 1797 | } 1798 | }, 1799 | { 1800 | "type" : "CIMSolidFill", 1801 | "enable" : true, 1802 | "color" : { 1803 | "type" : "CIMRGBColor", 1804 | "values" : [ 1805 | 130, 1806 | 130, 1807 | 130, 1808 | 100 1809 | ] 1810 | } 1811 | } 1812 | ], 1813 | "angleAlignment" : "Map" 1814 | }, 1815 | "respectFrame" : false 1816 | }, 1817 | { 1818 | "type" : "CIMSolidFill", 1819 | "enable" : false, 1820 | "colorLocked" : true, 1821 | "color" : { 1822 | "type" : "CIMRGBColor", 1823 | "values" : [ 1824 | 255, 1825 | 255, 1826 | 255, 1827 | 0 1828 | ] 1829 | } 1830 | } 1831 | ], 1832 | "angleAlignment" : "Map" 1833 | } 1834 | }, 1835 | "values" : [ 1836 | { 1837 | "type" : "CIMUniqueValue", 1838 | "fieldValues" : [ 1839 | "humusiert.Hoch_Flachmoor" 1840 | ] 1841 | } 1842 | ], 1843 | "visible" : true 1844 | }, 1845 | { 1846 | "type" : "CIMUniqueValueClass", 1847 | "label" : "stehendes Gewässer", 1848 | "patch" : "Default", 1849 | "symbol" : { 1850 | "type" : "CIMSymbolReference", 1851 | "symbol" : { 1852 | "type" : "CIMPolygonSymbol", 1853 | "symbolLayers" : [ 1854 | { 1855 | "type" : "CIMSolidStroke", 1856 | "enable" : true, 1857 | "capStyle" : "Round", 1858 | "joinStyle" : "Round", 1859 | "lineStyle3D" : "Strip", 1860 | "miterLimit" : 10, 1861 | "width" : 0.59999999999999998, 1862 | "height3D" : 1, 1863 | "anchor3D" : "Center", 1864 | "color" : { 1865 | "type" : "CIMRGBColor", 1866 | "values" : [ 1867 | 0, 1868 | 0, 1869 | 0, 1870 | 100 1871 | ] 1872 | } 1873 | }, 1874 | { 1875 | "type" : "CIMSolidFill", 1876 | "enable" : false, 1877 | "color" : { 1878 | "type" : "CIMRGBColor", 1879 | "values" : [ 1880 | 255, 1881 | 255, 1882 | 255, 1883 | 0 1884 | ] 1885 | } 1886 | } 1887 | ], 1888 | "angleAlignment" : "Map" 1889 | } 1890 | }, 1891 | "values" : [ 1892 | { 1893 | "type" : "CIMUniqueValue", 1894 | "fieldValues" : [ 1895 | "Gewaesser.stehendes" 1896 | ] 1897 | } 1898 | ], 1899 | "visible" : true 1900 | }, 1901 | { 1902 | "type" : "CIMUniqueValueClass", 1903 | "label" : "fliessendes Gewässer", 1904 | "patch" : "Default", 1905 | "symbol" : { 1906 | "type" : "CIMSymbolReference", 1907 | "symbol" : { 1908 | "type" : "CIMPolygonSymbol", 1909 | "symbolLayers" : [ 1910 | { 1911 | "type" : "CIMSolidStroke", 1912 | "enable" : true, 1913 | "capStyle" : "Round", 1914 | "joinStyle" : "Round", 1915 | "lineStyle3D" : "Strip", 1916 | "miterLimit" : 10, 1917 | "width" : 0.59999999999999998, 1918 | "height3D" : 1, 1919 | "anchor3D" : "Center", 1920 | "color" : { 1921 | "type" : "CIMRGBColor", 1922 | "values" : [ 1923 | 0, 1924 | 0, 1925 | 0, 1926 | 100 1927 | ] 1928 | } 1929 | }, 1930 | { 1931 | "type" : "CIMSolidFill", 1932 | "enable" : false, 1933 | "color" : { 1934 | "type" : "CIMRGBColor", 1935 | "values" : [ 1936 | 255, 1937 | 255, 1938 | 255, 1939 | 0 1940 | ] 1941 | } 1942 | } 1943 | ], 1944 | "angleAlignment" : "Map" 1945 | } 1946 | }, 1947 | "values" : [ 1948 | { 1949 | "type" : "CIMUniqueValue", 1950 | "fieldValues" : [ 1951 | "Gewaesser.fliessendes" 1952 | ] 1953 | } 1954 | ], 1955 | "visible" : true 1956 | }, 1957 | { 1958 | "type" : "CIMUniqueValueClass", 1959 | "label" : "Schilfgürtel", 1960 | "patch" : "Default", 1961 | "symbol" : { 1962 | "type" : "CIMSymbolReference", 1963 | "symbol" : { 1964 | "type" : "CIMPolygonSymbol", 1965 | "symbolLayers" : [ 1966 | { 1967 | "type" : "CIMSolidStroke", 1968 | "effects" : [ 1969 | { 1970 | "type" : "CIMGeometricEffectDashes", 1971 | "dashTemplate" : [ 1972 | 4, 1973 | 1 1974 | ], 1975 | "lineDashEnding" : "NoConstraint", 1976 | "controlPointEnding" : "NoConstraint" 1977 | } 1978 | ], 1979 | "enable" : true, 1980 | "capStyle" : "Butt", 1981 | "joinStyle" : "Miter", 1982 | "lineStyle3D" : "Strip", 1983 | "miterLimit" : 10, 1984 | "width" : 0.59999999999999998, 1985 | "height3D" : 1, 1986 | "anchor3D" : "Center", 1987 | "color" : { 1988 | "type" : "CIMRGBColor", 1989 | "values" : [ 1990 | 0, 1991 | 0, 1992 | 0, 1993 | 100 1994 | ] 1995 | } 1996 | }, 1997 | { 1998 | "type" : "CIMCharacterMarker", 1999 | "enable" : true, 2000 | "colorLocked" : true, 2001 | "anchorPointUnits" : "Relative", 2002 | "dominantSizeAxis3D" : "Y", 2003 | "size" : 8.5, 2004 | "billboardMode3D" : "FaceNearPlane", 2005 | "markerPlacement" : { 2006 | "type" : "CIMMarkerPlacementInsidePolygon", 2007 | "gridType" : "Fixed", 2008 | "randomness" : 100, 2009 | "seed" : 22698, 2010 | "stepX" : 28.300000000000001, 2011 | "stepY" : 28.300000000000001, 2012 | "clipping" : "ClipAtBoundary" 2013 | }, 2014 | "characterIndex" : 99, 2015 | "fontFamilyName" : "CadastraSymbol", 2016 | "fontStyleName" : "Regular", 2017 | "fontType" : "Unspecified", 2018 | "scaleX" : 1, 2019 | "symbol" : { 2020 | "type" : "CIMPolygonSymbol", 2021 | "symbolLayers" : [ 2022 | { 2023 | "type" : "CIMSolidStroke", 2024 | "enable" : true, 2025 | "capStyle" : "Round", 2026 | "joinStyle" : "Round", 2027 | "lineStyle3D" : "Strip", 2028 | "miterLimit" : 4, 2029 | "width" : 0, 2030 | "height3D" : 1, 2031 | "anchor3D" : "Center", 2032 | "color" : { 2033 | "type" : "CIMRGBColor", 2034 | "values" : [ 2035 | 0, 2036 | 0, 2037 | 0, 2038 | 0 2039 | ] 2040 | } 2041 | }, 2042 | { 2043 | "type" : "CIMSolidFill", 2044 | "enable" : true, 2045 | "color" : { 2046 | "type" : "CIMRGBColor", 2047 | "values" : [ 2048 | 130, 2049 | 130, 2050 | 130, 2051 | 100 2052 | ] 2053 | } 2054 | } 2055 | ], 2056 | "angleAlignment" : "Map" 2057 | }, 2058 | "respectFrame" : false 2059 | }, 2060 | { 2061 | "type" : "CIMSolidFill", 2062 | "enable" : false, 2063 | "colorLocked" : true, 2064 | "color" : { 2065 | "type" : "CIMRGBColor", 2066 | "values" : [ 2067 | 255, 2068 | 255, 2069 | 255, 2070 | 0 2071 | ] 2072 | } 2073 | } 2074 | ], 2075 | "angleAlignment" : "Map" 2076 | } 2077 | }, 2078 | "values" : [ 2079 | { 2080 | "type" : "CIMUniqueValue", 2081 | "fieldValues" : [ 2082 | "Gewaesser.Schilfguertel" 2083 | ] 2084 | } 2085 | ], 2086 | "visible" : true 2087 | }, 2088 | { 2089 | "type" : "CIMUniqueValueClass", 2090 | "label" : "geschlossener Wald", 2091 | "patch" : "Default", 2092 | "symbol" : { 2093 | "type" : "CIMSymbolReference", 2094 | "symbol" : { 2095 | "type" : "CIMPolygonSymbol", 2096 | "symbolLayers" : [ 2097 | { 2098 | "type" : "CIMSolidStroke", 2099 | "effects" : [ 2100 | { 2101 | "type" : "CIMGeometricEffectDashes", 2102 | "dashTemplate" : [ 2103 | 4, 2104 | 1 2105 | ], 2106 | "lineDashEnding" : "NoConstraint", 2107 | "controlPointEnding" : "NoConstraint" 2108 | } 2109 | ], 2110 | "enable" : true, 2111 | "capStyle" : "Butt", 2112 | "joinStyle" : "Miter", 2113 | "lineStyle3D" : "Strip", 2114 | "miterLimit" : 10, 2115 | "width" : 0.59999999999999998, 2116 | "height3D" : 1, 2117 | "anchor3D" : "Center", 2118 | "color" : { 2119 | "type" : "CIMRGBColor", 2120 | "values" : [ 2121 | 0, 2122 | 0, 2123 | 0, 2124 | 100 2125 | ] 2126 | } 2127 | }, 2128 | { 2129 | "type" : "CIMCharacterMarker", 2130 | "enable" : true, 2131 | "colorLocked" : true, 2132 | "anchorPointUnits" : "Relative", 2133 | "dominantSizeAxis3D" : "Y", 2134 | "size" : 1.5, 2135 | "billboardMode3D" : "FaceNearPlane", 2136 | "markerPlacement" : { 2137 | "type" : "CIMMarkerPlacementInsidePolygon", 2138 | "gridType" : "Fixed", 2139 | "randomness" : 100, 2140 | "seed" : 22698, 2141 | "stepX" : 5.7000000000000002, 2142 | "stepY" : 5.7000000000000002, 2143 | "clipping" : "ClipAtBoundary" 2144 | }, 2145 | "characterIndex" : 73, 2146 | "fontFamilyName" : "CadastraSymbol", 2147 | "fontStyleName" : "Regular", 2148 | "fontType" : "Unspecified", 2149 | "scaleX" : 1, 2150 | "symbol" : { 2151 | "type" : "CIMPolygonSymbol", 2152 | "symbolLayers" : [ 2153 | { 2154 | "type" : "CIMSolidStroke", 2155 | "enable" : true, 2156 | "capStyle" : "Round", 2157 | "joinStyle" : "Round", 2158 | "lineStyle3D" : "Strip", 2159 | "miterLimit" : 4, 2160 | "width" : 0, 2161 | "height3D" : 1, 2162 | "anchor3D" : "Center", 2163 | "color" : { 2164 | "type" : "CIMRGBColor", 2165 | "values" : [ 2166 | 0, 2167 | 0, 2168 | 0, 2169 | 0 2170 | ] 2171 | } 2172 | }, 2173 | { 2174 | "type" : "CIMSolidFill", 2175 | "enable" : true, 2176 | "color" : { 2177 | "type" : "CIMRGBColor", 2178 | "values" : [ 2179 | 130, 2180 | 130, 2181 | 130, 2182 | 100 2183 | ] 2184 | } 2185 | } 2186 | ], 2187 | "angleAlignment" : "Map" 2188 | }, 2189 | "respectFrame" : false 2190 | }, 2191 | { 2192 | "type" : "CIMSolidFill", 2193 | "enable" : false, 2194 | "colorLocked" : true, 2195 | "color" : { 2196 | "type" : "CIMRGBColor", 2197 | "values" : [ 2198 | 255, 2199 | 255, 2200 | 255, 2201 | 0 2202 | ] 2203 | } 2204 | } 2205 | ], 2206 | "angleAlignment" : "Map" 2207 | } 2208 | }, 2209 | "values" : [ 2210 | { 2211 | "type" : "CIMUniqueValue", 2212 | "fieldValues" : [ 2213 | "bestockt.geschlossener_Wald" 2214 | ] 2215 | } 2216 | ], 2217 | "visible" : true 2218 | }, 2219 | { 2220 | "type" : "CIMUniqueValueClass", 2221 | "label" : "übrige bestockte", 2222 | "patch" : "Default", 2223 | "symbol" : { 2224 | "type" : "CIMSymbolReference", 2225 | "symbol" : { 2226 | "type" : "CIMPolygonSymbol", 2227 | "symbolLayers" : [ 2228 | { 2229 | "type" : "CIMSolidStroke", 2230 | "effects" : [ 2231 | { 2232 | "type" : "CIMGeometricEffectDashes", 2233 | "dashTemplate" : [ 2234 | 4, 2235 | 1 2236 | ], 2237 | "lineDashEnding" : "NoConstraint", 2238 | "controlPointEnding" : "NoConstraint" 2239 | } 2240 | ], 2241 | "enable" : true, 2242 | "capStyle" : "Butt", 2243 | "joinStyle" : "Miter", 2244 | "lineStyle3D" : "Strip", 2245 | "miterLimit" : 10, 2246 | "width" : 0.59999999999999998, 2247 | "height3D" : 1, 2248 | "anchor3D" : "Center", 2249 | "color" : { 2250 | "type" : "CIMRGBColor", 2251 | "values" : [ 2252 | 0, 2253 | 0, 2254 | 0, 2255 | 100 2256 | ] 2257 | } 2258 | }, 2259 | { 2260 | "type" : "CIMCharacterMarker", 2261 | "enable" : true, 2262 | "colorLocked" : true, 2263 | "anchorPointUnits" : "Relative", 2264 | "dominantSizeAxis3D" : "Y", 2265 | "size" : 1.5, 2266 | "billboardMode3D" : "FaceNearPlane", 2267 | "markerPlacement" : { 2268 | "type" : "CIMMarkerPlacementInsidePolygon", 2269 | "gridType" : "Fixed", 2270 | "randomness" : 100, 2271 | "seed" : 22698, 2272 | "stepX" : 11.300000000000001, 2273 | "stepY" : 11.300000000000001, 2274 | "clipping" : "ClipAtBoundary" 2275 | }, 2276 | "characterIndex" : 73, 2277 | "fontFamilyName" : "CadastraSymbol", 2278 | "fontStyleName" : "Regular", 2279 | "fontType" : "Unspecified", 2280 | "scaleX" : 1, 2281 | "symbol" : { 2282 | "type" : "CIMPolygonSymbol", 2283 | "symbolLayers" : [ 2284 | { 2285 | "type" : "CIMSolidStroke", 2286 | "enable" : true, 2287 | "capStyle" : "Round", 2288 | "joinStyle" : "Round", 2289 | "lineStyle3D" : "Strip", 2290 | "miterLimit" : 4, 2291 | "width" : 0, 2292 | "height3D" : 1, 2293 | "anchor3D" : "Center", 2294 | "color" : { 2295 | "type" : "CIMRGBColor", 2296 | "values" : [ 2297 | 0, 2298 | 0, 2299 | 0, 2300 | 0 2301 | ] 2302 | } 2303 | }, 2304 | { 2305 | "type" : "CIMSolidFill", 2306 | "enable" : true, 2307 | "color" : { 2308 | "type" : "CIMRGBColor", 2309 | "values" : [ 2310 | 130, 2311 | 130, 2312 | 130, 2313 | 100 2314 | ] 2315 | } 2316 | } 2317 | ], 2318 | "angleAlignment" : "Map" 2319 | }, 2320 | "respectFrame" : false 2321 | }, 2322 | { 2323 | "type" : "CIMSolidFill", 2324 | "enable" : false, 2325 | "colorLocked" : true, 2326 | "color" : { 2327 | "type" : "CIMRGBColor", 2328 | "values" : [ 2329 | 255, 2330 | 255, 2331 | 255, 2332 | 0 2333 | ] 2334 | } 2335 | } 2336 | ], 2337 | "angleAlignment" : "Map" 2338 | } 2339 | }, 2340 | "values" : [ 2341 | { 2342 | "type" : "CIMUniqueValue", 2343 | "fieldValues" : [ 2344 | "bestockt.uebrige_bestockte" 2345 | ] 2346 | } 2347 | ], 2348 | "visible" : true 2349 | }, 2350 | { 2351 | "type" : "CIMUniqueValueClass", 2352 | "label" : "Fels", 2353 | "patch" : "Default", 2354 | "symbol" : { 2355 | "type" : "CIMSymbolReference", 2356 | "symbol" : { 2357 | "type" : "CIMPolygonSymbol", 2358 | "symbolLayers" : [ 2359 | { 2360 | "type" : "CIMSolidStroke", 2361 | "effects" : [ 2362 | { 2363 | "type" : "CIMGeometricEffectDashes", 2364 | "dashTemplate" : [ 2365 | 4, 2366 | 1 2367 | ], 2368 | "lineDashEnding" : "NoConstraint", 2369 | "controlPointEnding" : "NoConstraint" 2370 | } 2371 | ], 2372 | "enable" : true, 2373 | "capStyle" : "Butt", 2374 | "joinStyle" : "Miter", 2375 | "lineStyle3D" : "Strip", 2376 | "miterLimit" : 10, 2377 | "width" : 0.59999999999999998, 2378 | "height3D" : 1, 2379 | "anchor3D" : "Center", 2380 | "color" : { 2381 | "type" : "CIMRGBColor", 2382 | "values" : [ 2383 | 0, 2384 | 0, 2385 | 0, 2386 | 100 2387 | ] 2388 | } 2389 | }, 2390 | { 2391 | "type" : "CIMCharacterMarker", 2392 | "enable" : true, 2393 | "colorLocked" : true, 2394 | "anchorPointUnits" : "Relative", 2395 | "dominantSizeAxis3D" : "Y", 2396 | "size" : 20, 2397 | "billboardMode3D" : "FaceNearPlane", 2398 | "markerPlacement" : { 2399 | "type" : "CIMMarkerPlacementInsidePolygon", 2400 | "gridType" : "Fixed", 2401 | "randomness" : 100, 2402 | "seed" : 22698, 2403 | "stepX" : 19.800000000000001, 2404 | "stepY" : 19.800000000000001, 2405 | "clipping" : "ClipAtBoundary" 2406 | }, 2407 | "characterIndex" : 50, 2408 | "fontFamilyName" : "CadastraSymbol", 2409 | "fontStyleName" : "Regular", 2410 | "fontType" : "Unspecified", 2411 | "scaleX" : 1, 2412 | "symbol" : { 2413 | "type" : "CIMPolygonSymbol", 2414 | "symbolLayers" : [ 2415 | { 2416 | "type" : "CIMSolidStroke", 2417 | "enable" : true, 2418 | "capStyle" : "Round", 2419 | "joinStyle" : "Round", 2420 | "lineStyle3D" : "Strip", 2421 | "miterLimit" : 4, 2422 | "width" : 0, 2423 | "height3D" : 1, 2424 | "anchor3D" : "Center", 2425 | "color" : { 2426 | "type" : "CIMRGBColor", 2427 | "values" : [ 2428 | 0, 2429 | 0, 2430 | 0, 2431 | 0 2432 | ] 2433 | } 2434 | }, 2435 | { 2436 | "type" : "CIMSolidFill", 2437 | "enable" : true, 2438 | "color" : { 2439 | "type" : "CIMRGBColor", 2440 | "values" : [ 2441 | 130, 2442 | 130, 2443 | 130, 2444 | 100 2445 | ] 2446 | } 2447 | } 2448 | ], 2449 | "angleAlignment" : "Map" 2450 | }, 2451 | "respectFrame" : false 2452 | }, 2453 | { 2454 | "type" : "CIMSolidFill", 2455 | "enable" : false, 2456 | "colorLocked" : true, 2457 | "color" : { 2458 | "type" : "CIMRGBColor", 2459 | "values" : [ 2460 | 255, 2461 | 255, 2462 | 255, 2463 | 0 2464 | ] 2465 | } 2466 | } 2467 | ], 2468 | "angleAlignment" : "Map" 2469 | } 2470 | }, 2471 | "values" : [ 2472 | { 2473 | "type" : "CIMUniqueValue", 2474 | "fieldValues" : [ 2475 | "vegetationslos.Fels" 2476 | ] 2477 | } 2478 | ], 2479 | "visible" : true 2480 | }, 2481 | { 2482 | "type" : "CIMUniqueValueClass", 2483 | "label" : "Geröll, Sand", 2484 | "patch" : "Default", 2485 | "symbol" : { 2486 | "type" : "CIMSymbolReference", 2487 | "symbol" : { 2488 | "type" : "CIMPolygonSymbol", 2489 | "symbolLayers" : [ 2490 | { 2491 | "type" : "CIMSolidStroke", 2492 | "effects" : [ 2493 | { 2494 | "type" : "CIMGeometricEffectDashes", 2495 | "dashTemplate" : [ 2496 | 4, 2497 | 1 2498 | ], 2499 | "lineDashEnding" : "NoConstraint", 2500 | "controlPointEnding" : "NoConstraint" 2501 | } 2502 | ], 2503 | "enable" : true, 2504 | "capStyle" : "Butt", 2505 | "joinStyle" : "Miter", 2506 | "lineStyle3D" : "Strip", 2507 | "miterLimit" : 10, 2508 | "width" : 0.59999999999999998, 2509 | "height3D" : 1, 2510 | "anchor3D" : "Center", 2511 | "color" : { 2512 | "type" : "CIMRGBColor", 2513 | "values" : [ 2514 | 0, 2515 | 0, 2516 | 0, 2517 | 100 2518 | ] 2519 | } 2520 | }, 2521 | { 2522 | "type" : "CIMCharacterMarker", 2523 | "enable" : true, 2524 | "colorLocked" : true, 2525 | "anchorPointUnits" : "Relative", 2526 | "dominantSizeAxis3D" : "Y", 2527 | "size" : 20, 2528 | "billboardMode3D" : "FaceNearPlane", 2529 | "markerPlacement" : { 2530 | "type" : "CIMMarkerPlacementInsidePolygon", 2531 | "gridType" : "Fixed", 2532 | "randomness" : 100, 2533 | "seed" : 22698, 2534 | "stepX" : 19.800000000000001, 2535 | "stepY" : 19.800000000000001, 2536 | "clipping" : "ClipAtBoundary" 2537 | }, 2538 | "characterIndex" : 50, 2539 | "fontFamilyName" : "CadastraSymbol", 2540 | "fontStyleName" : "Regular", 2541 | "fontType" : "Unspecified", 2542 | "scaleX" : 1, 2543 | "symbol" : { 2544 | "type" : "CIMPolygonSymbol", 2545 | "symbolLayers" : [ 2546 | { 2547 | "type" : "CIMSolidStroke", 2548 | "enable" : true, 2549 | "capStyle" : "Round", 2550 | "joinStyle" : "Round", 2551 | "lineStyle3D" : "Strip", 2552 | "miterLimit" : 4, 2553 | "width" : 0, 2554 | "height3D" : 1, 2555 | "anchor3D" : "Center", 2556 | "color" : { 2557 | "type" : "CIMRGBColor", 2558 | "values" : [ 2559 | 0, 2560 | 0, 2561 | 0, 2562 | 0 2563 | ] 2564 | } 2565 | }, 2566 | { 2567 | "type" : "CIMSolidFill", 2568 | "enable" : true, 2569 | "color" : { 2570 | "type" : "CIMRGBColor", 2571 | "values" : [ 2572 | 130, 2573 | 130, 2574 | 130, 2575 | 100 2576 | ] 2577 | } 2578 | } 2579 | ], 2580 | "angleAlignment" : "Map" 2581 | }, 2582 | "respectFrame" : false 2583 | }, 2584 | { 2585 | "type" : "CIMSolidFill", 2586 | "enable" : false, 2587 | "colorLocked" : true, 2588 | "color" : { 2589 | "type" : "CIMRGBColor", 2590 | "values" : [ 2591 | 255, 2592 | 255, 2593 | 255, 2594 | 0 2595 | ] 2596 | } 2597 | } 2598 | ], 2599 | "angleAlignment" : "Map" 2600 | } 2601 | }, 2602 | "values" : [ 2603 | { 2604 | "type" : "CIMUniqueValue", 2605 | "fieldValues" : [ 2606 | "vegetationslos.Geroell_Sand" 2607 | ] 2608 | } 2609 | ], 2610 | "visible" : true 2611 | }, 2612 | { 2613 | "type" : "CIMUniqueValueClass", 2614 | "label" : "Abbau, Deponie", 2615 | "patch" : "Default", 2616 | "symbol" : { 2617 | "type" : "CIMSymbolReference", 2618 | "symbol" : { 2619 | "type" : "CIMPolygonSymbol", 2620 | "symbolLayers" : [ 2621 | { 2622 | "type" : "CIMSolidStroke", 2623 | "effects" : [ 2624 | { 2625 | "type" : "CIMGeometricEffectDashes", 2626 | "dashTemplate" : [ 2627 | 4, 2628 | 1 2629 | ], 2630 | "lineDashEnding" : "NoConstraint", 2631 | "controlPointEnding" : "NoConstraint" 2632 | } 2633 | ], 2634 | "enable" : true, 2635 | "capStyle" : "Butt", 2636 | "joinStyle" : "Miter", 2637 | "lineStyle3D" : "Strip", 2638 | "miterLimit" : 10, 2639 | "width" : 0.59999999999999998, 2640 | "height3D" : 1, 2641 | "anchor3D" : "Center", 2642 | "color" : { 2643 | "type" : "CIMRGBColor", 2644 | "values" : [ 2645 | 0, 2646 | 0, 2647 | 0, 2648 | 100 2649 | ] 2650 | } 2651 | }, 2652 | { 2653 | "type" : "CIMSolidFill", 2654 | "enable" : false, 2655 | "color" : { 2656 | "type" : "CIMRGBColor", 2657 | "values" : [ 2658 | 255, 2659 | 255, 2660 | 255, 2661 | 0 2662 | ] 2663 | } 2664 | } 2665 | ], 2666 | "angleAlignment" : "Map" 2667 | } 2668 | }, 2669 | "values" : [ 2670 | { 2671 | "type" : "CIMUniqueValue", 2672 | "fieldValues" : [ 2673 | "vegetationslos.Abbau_Deponie" 2674 | ] 2675 | } 2676 | ], 2677 | "visible" : true 2678 | } 2679 | ] 2680 | } 2681 | ], 2682 | "polygonSymbolColorTarget" : "Fill" 2683 | }, 2684 | "scaleSymbols" : false, 2685 | "snappable" : true 2686 | } 2687 | ], 2688 | "binaryReferences" : [ 2689 | { 2690 | "type" : "CIMBinaryReference", 2691 | "uRI" : "CIMPATH=Metadata/8d75b85897a875152c30c15dc85edb94.xml", 2692 | "data" : "\r\n20221025024914001.0TRUEAV: Bodenbedeckung s/w\r\n" 2693 | } 2694 | ], 2695 | "rGBColorProfile" : "sRGB IEC61966-2.1", 2696 | "cMYKColorProfile" : "U.S. Web Coated (SWOP) v2" 2697 | } 2698 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "esModuleInterop": true, 4 | "target": "es6", 5 | "module": "commonjs", 6 | "outDir": "./build", 7 | "lib": [ 8 | "DOM", 9 | "ES6" 10 | ], 11 | "rootDir": ".", 12 | "strict": true, 13 | "skipLibCheck": true, 14 | "resolveJsonModule": true, 15 | "allowSyntheticDefaultImports": true 16 | } 17 | } 18 | --------------------------------------------------------------------------------