Create SVG drawings from vector geodata files (SHP, geojson, etc).

Overview

SVGIS

Create SVG drawings from vector geodata files (SHP, geojson, etc).

SVGIS is great for: creating small multiples, combining lots of datasets in a sensible projection, and drawing styled based on classes in the source data. It's perfect for creating base maps for editing in a drawing program, and its CSS-based styling gives great flexibility for styling.

svgis draw input.shp -o out.svg
svgis draw south_dakota.shp north_dakota.geojson -o dakota.svg
svgis draw england.shp scotland.shp wales.shp --style gb.css -o great_britain.svg

Complete documentation, with more examples and explanation of classes and methods: https://svgis.readthedocs.io/en/stable/

Install

Requires fiona, which in turn requires GDAL.

See the GDAL docs for install info.

Then:

pip install svgis

An optional feature of svgis is clipping polygons to a bounding box. This will speed things up if you need to draw only part of a very complex feature.

pip install 'svgis[clip]'

Commands

The svgis command line tool includes several utilities. The most important is svgis draw, which draws SVG maps based on input geodata layers.

Additional commands:

  • svgis bounds: get the bounding box for a layer in a given projection
  • svgis graticule: create a graticule (grid) within a given bounds
  • svgis project: determine what projection svgis draw will (optionally) generate for given bounding box
  • svgis scale: change the scale of an existing SVG
  • svgis style: add css styles to an existing SVG

Read the docs for complete information on these commands and their options.

Examples

Draw the outline of the contiguous United States, projected in Albers:

curl -O http://www2.census.gov/geo/tiger/GENZ2014/shp/cb_2014_us_nation_20m.zip
unzip cb_2014_us_nation_20m.zip
svgis draw cb_2014_us_nation_20m.shp --crs EPSG:5070 --scale 1000 --bounds -124 20.5 -64 49 -o us.svg

The next two examples use the Natural Earth admin-0 data set.

Draw upper income countries in green, low-income countries in blue:

/* style.css */
.income_grp_5_Low_income {
    fill: blue;
}
.income_grp_3_Upper_middle_income {
    fill: green
}
.ne_110m_lakes {
    fill: #09d;
    stroke: none;
}
svgis draw --style style.css --class-fields income_grp ne_110m_admin_0_countries.shp ne_110m_lakes.shp -o out.svg

Draw national boundaries and lakes in Europe using the LAEA Europe projection, simplifying the output polygons, and coloring Germany in purple.

svgis draw ne_110m_admin_0_countries.shp ne_110m_lakes.shp \
    --crs EPSG:3035 \ 
    --scale 1000 \ 
    --simplify 90 \ 
    --style '.ne_110m_admin_0_countries { fill: tan } #Germany { fill: purple }' \
    --style '.ne_110m_lakes { fill: #09d; stroke: none; }' \ 
    --id-field name \ 
    --bounds -10 30 40 65 \ 
    -o out.svg
Comments
  • Getting value error converting GeoJSON with coordinates array of length > 1

    Getting value error converting GeoJSON with coordinates array of length > 1

    Using svgis 0.5.1

    Traceback:

    File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 84, in map
        ).compose(**kwargs)
      File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 476, in compose
        members = [svg.group(**self.compose_file(f, bounds, scalar=scalar, **kwargs)) for f in self.files]
      File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 476, in <listcomp>
        members = [svg.group(**self.compose_file(f, bounds, scalar=scalar, **kwargs)) for f in self.files]
      File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 380, in compose_file
        group = tuple(self.feature(f, **kwargs) for _, f in layer.items(bbox=bounds))
      File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 380, in <genexpr>
        group = tuple(self.feature(f, **kwargs) for _, f in layer.items(bbox=bounds))
      File "/usr/local/lib/python3.6/dist-packages/svgis/svgis.py", line 419, in feature
        if not geom['coordinates']:
    ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
    

    GeoJSON (excuse the size):

    {
      "type": "FeatureCollection",
      "features": [
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 0,
            "surfaceArea": 2.1440696916641775,
            "perimeter": 7.10731713835107,
            "azimuth": 210.11937158278803,
            "slope": 20.646261460804354
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27582144344457,
                  37.83630635709143,
                  4.833463177084923
                ],
                [
                  -121.27583143751141,
                  37.83629160087113,
                  4.133936115540564
                ],
                [
                  -121.27579970398412,
                  37.83629735130918,
                  4.884500785730779
                ],
                [
                  -121.27582144344457,
                  37.83630635709143,
                  4.833463177084923
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 1,
            "surfaceArea": 10.825123556776308,
            "perimeter": 14.542523478240337,
            "azimuth": 24.1704032014689,
            "slope": 23.14000504460674
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27582144344457,
                  37.83630635709143,
                  4.833463177084923
                ],
                [
                  -121.27580257616148,
                  37.836334004858024,
                  3.3815100491046906
                ],
                [
                  -121.27577121760163,
                  37.83632071797112,
                  3.406243648380041
                ],
                [
                  -121.27577357354005,
                  37.836317631240696,
                  3.573150190524757
                ],
                [
                  -121.2757772356068,
                  37.83631893500418,
                  3.6227799635380507
                ],
                [
                  -121.2757958573853,
                  37.83629075005293,
                  5.131495578214526
                ],
                [
                  -121.27579970398412,
                  37.83629735130918,
                  4.884500785730779
                ],
                [
                  -121.27582144344457,
                  37.83630635709143,
                  4.833463177084923
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 2,
            "surfaceArea": 27.44068205227838,
            "perimeter": 36.240407054341574,
            "azimuth": -63.75542195174191,
            "slope": 19.583553945307585
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27586567286802,
                  37.83626207901918,
                  3.7059282921254635
                ],
                [
                  -121.27586391965484,
                  37.83626086347862,
                  3.8359531983733177
                ],
                [
                  -121.27588115789048,
                  37.836234727946696,
                  3.7950636046007276
                ],
                [
                  -121.27587667607592,
                  37.83623251718042,
                  4.059723211452365
                ],
                [
                  -121.27587793627684,
                  37.836231284364665,
                  3.841487598605454
                ],
                [
                  -121.27590041745219,
                  37.836240655304394,
                  3.1380982594564557
                ],
                [
                  -121.27586425101408,
                  37.83629776300183,
                  3.1416021874174476
                ],
                [
                  -121.27585835169138,
                  37.83629523513036,
                  3.327386242337525
                ],
                [
                  -121.27584132028394,
                  37.8363225560868,
                  3.3058541547507048
                ],
                [
                  -121.2758172617218,
                  37.83631280334612,
                  4.185891821980476
                ],
                [
                  -121.27583143751141,
                  37.83629160087113,
                  4.133936115540564
                ],
                [
                  -121.27579970398412,
                  37.83629735130918,
                  4.884500785730779
                ],
                [
                  -121.2757958573853,
                  37.83629075005293,
                  5.131495578214526
                ],
                [
                  -121.27580929262643,
                  37.836274778426144,
                  5.110839830711484
                ],
                [
                  -121.2758483983373,
                  37.83628861076945,
                  3.7071462105959654
                ],
                [
                  -121.27586567286802,
                  37.83626207901918,
                  3.7059282921254635
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 3,
            "surfaceArea": 21.830967030742887,
            "perimeter": 20.28903530253757,
            "azimuth": 207.09645855277546,
            "slope": 22.03961254658374
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ],
                [
                  -121.27586388503121,
                  37.836262398627824,
                  7.805101899430156
                ],
                [
                  -121.27588373849159,
                  37.836232434722234,
                  6.309722417034209
                ],
                [
                  -121.27584659183364,
                  37.83621758591053,
                  6.312090791761875
                ],
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 4,
            "surfaceArea": 0.9777817066947325,
            "perimeter": 5.418937858014594,
            "azimuth": 227.0699071149062,
            "slope": 25.21430915629759
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27585635744335,
                  37.83627504356126,
                  7.1366206696256995
                ],
                [
                  -121.27585930768811,
                  37.83627647549584,
                  7.113984065130353
                ],
                [
                  -121.27587010323093,
                  37.836259907181955,
                  6.183894299902022
                ],
                [
                  -121.27586483191283,
                  37.83625721582116,
                  6.266144037246704
                ],
                [
                  -121.27585635744335,
                  37.83627504356126,
                  7.1366206696256995
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 5,
            "surfaceArea": 74.55044790697363,
            "perimeter": 38.27431637512636,
            "azimuth": 115.6125272999443,
            "slope": 22.729529147581488
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27572578303094,
                  37.83630047520815,
                  8.4885044246912
                ],
                [
                  -121.27567213103877,
                  37.836277738347,
                  6.257800497114658
                ],
                [
                  -121.27573993371544,
                  37.836175013286734,
                  6.318326803855598
                ],
                [
                  -121.27577776804954,
                  37.8361907493256,
                  7.94224742334336
                ],
                [
                  -121.27577573334501,
                  37.83619439168128,
                  7.937819387763739
                ],
                [
                  -121.27578303176935,
                  37.83619772302146,
                  8.246436497196555
                ],
                [
                  -121.27578610640342,
                  37.83619354141349,
                  8.2577840173617
                ],
                [
                  -121.27579365655174,
                  37.83619794134555,
                  8.551419008523226
                ],
                [
                  -121.27572578303094,
                  37.83630047520815,
                  8.4885044246912
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 6,
            "surfaceArea": 59.52150166245687,
            "perimeter": 40.76332239773024,
            "azimuth": -63.08670677001493,
            "slope": 23.16126990415202
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ],
                [
                  -121.27584659183364,
                  37.83621758591053,
                  6.312090791761875
                ],
                [
                  -121.27579365655174,
                  37.83619794134555,
                  8.551419008523226
                ],
                [
                  -121.27572578303094,
                  37.83630047520815,
                  8.4885044246912
                ],
                [
                  -121.27578025544622,
                  37.83632241759496,
                  6.214883226901293
                ],
                [
                  -121.27580919688194,
                  37.83627707427692,
                  6.261006620712578
                ],
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofFacet",
            "id": 7,
            "surfaceArea": 22.199615298550718,
            "perimeter": 20.775422449082573,
            "azimuth": 25.651614565932135,
            "slope": 23.076335657486027
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ],
                [
                  -121.27586388503121,
                  37.836262398627824,
                  7.805101899430156
                ],
                [
                  -121.27585635744335,
                  37.83627504356126,
                  7.1366206696256995
                ],
                [
                  -121.27585930768811,
                  37.83627647549584,
                  7.113984065130353
                ],
                [
                  -121.27584880154441,
                  37.8362927514546,
                  6.25716826505959
                ],
                [
                  -121.27580919688194,
                  37.83627707427692,
                  6.261006620712578
                ],
                [
                  -121.27579119643984,
                  37.836232210132444,
                  7.844164335168898
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 1.9862084646052045,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              0
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27582144344457,
                37.83630635709143,
                4.833463177084923
              ],
              [
                -121.27583143751141,
                37.83629160087113,
                4.133936115540564
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.9617558045156485,
            "roofEdgeType": "VALLEY",
            "gutter": false,
            "roofFacetIds": [
              2,
              0
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27583143751141,
                37.83629160087113,
                4.133936115540564
              ],
              [
                -121.27579970398412,
                37.83629735130918,
                4.884500785730779
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.1593528692302177,
            "roofEdgeType": "RIDGE",
            "gutter": false,
            "roofFacetIds": [
              1,
              0
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27579970398412,
                37.83629735130918,
                4.884500785730779
              ],
              [
                -121.27582144344457,
                37.83630635709143,
                4.833463177084923
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.7789874624991326,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              1
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27582144344457,
                37.83630635709143,
                4.833463177084923
              ],
              [
                -121.27580257616148,
                37.836334004858024,
                3.3815100491046906
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.129392762905842,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              1
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27580257616148,
                37.836334004858024,
                3.3815100491046906
              ],
              [
                -121.27577121760163,
                37.83632071797112,
                3.406243648380041
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.4338307282471547,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              1
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27577121760163,
                37.83632071797112,
                3.406243648380041
              ],
              [
                -121.27577357354005,
                37.836317631240696,
                3.573150190524757
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.3567800132061024,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              1
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27577357354005,
                37.836317631240696,
                3.573150190524757
              ],
              [
                -121.2757772356068,
                37.83631893500418,
                3.6227799635380507
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.8401703415944644,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              1
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.2757772356068,
                37.83631893500418,
                3.6227799635380507
              ],
              [
                -121.2757958573853,
                37.83629075005293,
                5.131495578214526
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.8440093005574266,
            "roofEdgeType": "HIP",
            "gutter": false,
            "roofFacetIds": [
              1,
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.2757958573853,
                37.83629075005293,
                5.131495578214526
              ],
              [
                -121.27579970398412,
                37.83629735130918,
                4.884500785730779
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.24272878268629117,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586567286802,
                37.83626207901918,
                3.7059282921254635
              ],
              [
                -121.27586391965484,
                37.83626086347862,
                3.8359531983733177
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.273659017725325,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586391965484,
                37.83626086347862,
                3.8359531983733177
              ],
              [
                -121.27588115789048,
                37.836234727946696,
                3.7950636046007276
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.5346531972698263,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27588115789048,
                37.836234727946696,
                3.7950636046007276
              ],
              [
                -121.27587667607592,
                37.83623251718042,
                4.059723211452365
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.28044458601856487,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27587667607592,
                37.83623251718042,
                4.059723211452365
              ],
              [
                -121.27587793627684,
                37.836231284364665,
                3.841487598605454
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.34343931874503,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27587793627684,
                37.836231284364665,
                3.841487598605454
              ],
              [
                -121.27590041745219,
                37.836240655304394,
                3.1380982594564557
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 7.092346901000751,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27590041745219,
                37.836240655304394,
                3.1380982594564557
              ],
              [
                -121.27586425101408,
                37.83629776300183,
                3.1416021874174476
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.6187344326559621,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586425101408,
                37.83629776300183,
                3.1416021874174476
              ],
              [
                -121.27585835169138,
                37.83629523513036,
                3.327386242337525
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.382485959863508,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27585835169138,
                37.83629523513036,
                3.327386242337525
              ],
              [
                -121.27584132028394,
                37.8363225560868,
                3.3058541547507048
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.5357553458401783,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27584132028394,
                37.8363225560868,
                3.3058541547507048
              ],
              [
                -121.2758172617218,
                37.83631280334612,
                4.185891821980476
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.663902519136443,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.2758172617218,
                37.83631280334612,
                4.185891821980476
              ],
              [
                -121.27583143751141,
                37.83629160087113,
                4.133936115540564
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.1308915617612336,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.2757958573853,
                37.83629075005293,
                5.131495578214526
              ],
              [
                -121.27580929262643,
                37.836274778426144,
                5.110839830711484
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 4.021705863750946,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27580929262643,
                37.836274778426144,
                5.110839830711484
              ],
              [
                -121.2758483983373,
                37.83628861076945,
                3.7071462105959654
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.313894462814442,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.2758483983373,
                37.83628861076945,
                3.7071462105959654
              ],
              [
                -121.27586567286802,
                37.83626207901918,
                3.7059282921254635
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 7.222094604618665,
            "roofEdgeType": "RIDGE",
            "gutter": false,
            "roofFacetIds": [
              3,
              7
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27579119643984,
                37.836232210132444,
                7.844164335168898
              ],
              [
                -121.27586388503121,
                37.836262398627824,
                7.805101899430156
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 4.043273495790457,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              3
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586388503121,
                37.836262398627824,
                7.805101899430156
              ],
              [
                -121.27588373849159,
                37.836232434722234,
                6.309722417034209
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.661364502108562,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              3
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27588373849159,
                37.836232434722234,
                6.309722417034209
              ],
              [
                -121.27584659183364,
                37.83621758591053,
                6.312090791761875
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.362302700019888,
            "roofEdgeType": "VALLEY",
            "gutter": false,
            "roofFacetIds": [
              6,
              3
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27584659183364,
                37.83621758591053,
                6.312090791761875
              ],
              [
                -121.27579119643984,
                37.836232210132444,
                7.844164335168898
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.3052810500643061,
            "roofEdgeType": "HIP",
            "gutter": false,
            "roofFacetIds": [
              7,
              4
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27585635744335,
                37.83627504356126,
                7.1366206696256995
              ],
              [
                -121.27585930768811,
                37.83627647549584,
                7.113984065130353
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.269133656519098,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              4
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27585930768811,
                37.83627647549584,
                7.113984065130353
              ],
              [
                -121.27587010323093,
                37.836259907181955,
                6.183894299902022
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.5578929688408287,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              4
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27587010323093,
                37.836259907181955,
                6.183894299902022
              ],
              [
                -121.27586483191283,
                37.83625721582116,
                6.266144037246704
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.286630182590362,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              4
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586483191283,
                37.83625721582116,
                6.266144037246704
              ],
              [
                -121.27585635744335,
                37.83627504356126,
                7.1366206696256995
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.800290885516833,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27572578303094,
                37.83630047520815,
                8.4885044246912
              ],
              [
                -121.27567213103877,
                37.836277738347,
                6.257800497114658
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 12.868143405494957,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27567213103877,
                37.836277738347,
                6.257800497114658
              ],
              [
                -121.27573993371544,
                37.836175013286734,
                6.318326803855598
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 4.095899715539762,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27573993371544,
                37.836175013286734,
                6.318326803855598
              ],
              [
                -121.27577776804954,
                37.8361907493256,
                7.94224742334336
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.44214772594384844,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27577776804954,
                37.8361907493256,
                7.94224742334336
              ],
              [
                -121.27577573334501,
                37.83619439168128,
                7.937819387763739
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.8028659570934007,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27577573334501,
                37.83619439168128,
                7.937819387763739
              ],
              [
                -121.27578303176935,
                37.83619772302146,
                8.246436497196555
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.5373374853148606,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27578303176935,
                37.83619772302146,
                8.246436497196555
              ],
              [
                -121.27578610640342,
                37.83619354141349,
                8.2577840173617
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 0.8753754332718328,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27578610640342,
                37.83619354141349,
                8.2577840173617
              ],
              [
                -121.27579365655174,
                37.83619794134555,
                8.551419008523226
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 12.852255766950869,
            "roofEdgeType": "RIDGE",
            "gutter": false,
            "roofFacetIds": [
              6,
              5
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27579365655174,
                37.83619794134555,
                8.551419008523226
              ],
              [
                -121.27572578303094,
                37.83630047520815,
                8.4885044246912
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.6103465142255775,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27584659183364,
                37.83621758591053,
                6.312090791761875
              ],
              [
                -121.27579365655174,
                37.83619794134555,
                8.551419008523226
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.838381135894072,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27572578303094,
                37.83630047520815,
                8.4885044246912
              ],
              [
                -121.27578025544622,
                37.83632241759496,
                6.214883226901293
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.640419499554775,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27578025544622,
                37.83632241759496,
                6.214883226901293
              ],
              [
                -121.27580919688194,
                37.83627707427692,
                6.261006620712578
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 5.4596167810850575,
            "roofEdgeType": "VALLEY",
            "gutter": false,
            "roofFacetIds": [
              6,
              7
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27580919688194,
                37.83627707427692,
                6.261006620712578
              ],
              [
                -121.27579119643984,
                37.836232210132444,
                7.844164335168898
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 1.6897374961705753,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              7
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27586388503121,
                37.836262398627824,
                7.805101899430156
              ],
              [
                -121.27585635744335,
                37.83627504356126,
                7.1366206696256995
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 2.202727553690211,
            "roofEdgeType": "RAKE",
            "gutter": false,
            "roofFacetIds": [
              7
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27585930768811,
                37.83627647549584,
                7.113984065130353
              ],
              [
                -121.27584880154441,
                37.8362927514546,
                6.25716826505959
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofEdge",
            "length": 3.895964963453757,
            "roofEdgeType": "EAVE",
            "gutter": false,
            "roofFacetIds": [
              7
            ]
          },
          "geometry": {
            "type": "LineString",
            "coordinates": [
              [
                -121.27584880154441,
                37.8362927514546,
                6.25716826505959
              ],
              [
                -121.27580919688194,
                37.83627707427692,
                6.261006620712578
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 0,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27578908577561,
                  37.83621203116862
                ],
                [
                  -121.27578095532957,
                  37.83620845650105
                ],
                [
                  -121.27577693201603,
                  37.83621342131706
                ],
                [
                  -121.27578682266176,
                  37.836216400206496
                ],
                [
                  -121.27578908577561,
                  37.83621203116862
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 1,
            "roofFacetIds": [
              2
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27581473439933,
                  37.83628941605919
                ],
                [
                  -121.27581817097962,
                  37.83628412026089
                ],
                [
                  -121.2758101243526,
                  37.8362814723616
                ],
                [
                  -121.27580752596262,
                  37.83628650337017
                ],
                [
                  -121.27581473439933,
                  37.83628941605919
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 2,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.2758318334818,
                  37.8362189819106
                ],
                [
                  -121.27583510242404,
                  37.83622030586137
                ],
                [
                  -121.27583644352853,
                  37.83621779035487
                ],
                [
                  -121.27583367750049,
                  37.83621659879915
                ],
                [
                  -121.2758318334818,
                  37.8362189819106
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 3,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27582630142572,
                  37.83621719457701
                ],
                [
                  -121.27582889981569,
                  37.83621851852783
                ],
                [
                  -121.27583040855826,
                  37.836216003021256
                ],
                [
                  -121.27582764253022,
                  37.83621501005812
                ],
                [
                  -121.27582630142572,
                  37.83621719457701
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 4,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27577391453089,
                  37.83619435642173
                ],
                [
                  -121.27578355371953,
                  37.836199122646036
                ],
                [
                  -121.2757892534137,
                  37.836191178938705
                ],
                [
                  -121.275779530406,
                  37.836186346516314
                ],
                [
                  -121.27577391453089,
                  37.83619435642173
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 5,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27576880156995,
                  37.83624863840242
                ],
                [
                  -121.27577056176962,
                  37.83624612289689
                ],
                [
                  -121.27576653845611,
                  37.83624479894659
                ],
                [
                  -121.2757649458945,
                  37.836247049662106
                ],
                [
                  -121.27576880156995,
                  37.83624863840242
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 6,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27579604275526,
                  37.8362680342712
                ],
                [
                  -121.27579763531688,
                  37.83626578355631
                ],
                [
                  -121.27579528838397,
                  37.83626485679134
                ],
                [
                  -121.27579386346046,
                  37.83626697511128
                ],
                [
                  -121.27579604275526,
                  37.8362680342712
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 7,
            "roofFacetIds": [
              6
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27579285763208,
                  37.836277037130046
                ],
                [
                  -121.27579478546981,
                  37.83627472021795
                ],
                [
                  -121.27579109743239,
                  37.83627326387317
                ],
                [
                  -121.27578942105175,
                  37.8362757131803
                ],
                [
                  -121.27579285763208,
                  37.836277037130046
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 8,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27572387456895,
                  37.83629047521881
                ],
                [
                  -121.27572513185443,
                  37.83628868788695
                ],
                [
                  -121.27572312019767,
                  37.836287959714696
                ],
                [
                  -121.2757218629122,
                  37.836289747046564
                ],
                [
                  -121.27572387456895,
                  37.83629047521881
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 9,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27569277770819,
                  37.836284385050824
                ],
                [
                  -121.27569420263175,
                  37.836282796311274
                ],
                [
                  -121.27569160424176,
                  37.836281737151545
                ],
                [
                  -121.27569034695627,
                  37.83628339208861
                ],
                [
                  -121.27569277770819,
                  37.836284385050824
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 10,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.2757023330778,
                  37.83625975958379
                ],
                [
                  -121.27570367418232,
                  37.8362579722512
                ],
                [
                  -121.27570115961136,
                  37.83625724407861
                ],
                [
                  -121.27569998614493,
                  37.836258766621235
                ],
                [
                  -121.2757023330778,
                  37.83625975958379
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 11,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27569076605143,
                  37.83626121592882
                ],
                [
                  -121.27569210715595,
                  37.83625916380626
                ],
                [
                  -121.27568934112789,
                  37.83625830323869
                ],
                [
                  -121.27568808384241,
                  37.83626009057129
                ],
                [
                  -121.27569076605143,
                  37.83626121592882
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "RoofObstruction",
            "id": 12,
            "roofFacetIds": [
              5
            ]
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27571691758934,
                  37.83622758759026
                ],
                [
                  -121.27571817487478,
                  37.836225866454406
                ],
                [
                  -121.27571557648484,
                  37.83622507208401
                ],
                [
                  -121.27571457065646,
                  37.83622666082481
                ],
                [
                  -121.27571691758934,
                  37.83622758759026
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 0,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 2.759511769976871
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27580526367184,
                  37.8363379078634
                ],
                [
                  -121.27580634598287,
                  37.83634268220605
                ],
                [
                  -121.27580964964552,
                  37.8363467646411
                ],
                [
                  -121.27581467170732,
                  37.83634953365469
                ],
                [
                  -121.27582064760475,
                  37.836350567689415
                ],
                [
                  -121.27582666756118,
                  37.8363497093228
                ],
                [
                  -121.27583181509242,
                  37.83634708923342
                ],
                [
                  -121.2758353065333,
                  37.8363431063063
                ],
                [
                  -121.27583661034372,
                  37.83633836690612
                ],
                [
                  -121.27583552803078,
                  37.836333592563705
                ],
                [
                  -121.27583222436724,
                  37.83632951012935
                ],
                [
                  -121.27582720230608,
                  37.83632674111652
                ],
                [
                  -121.27582122641046,
                  37.83632570708216
                ],
                [
                  -121.27581520645595,
                  37.83632656544855
                ],
                [
                  -121.27581005892559,
                  37.83632918553723
                ],
                [
                  -121.27580656748408,
                  37.836333168463604
                ],
                [
                  -121.27580526367184,
                  37.8363379078634
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 1,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 1.8114214609867836
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27559305439338,
                  37.836257622975154
                ],
                [
                  -121.27559376484322,
                  37.83626075698959
                ],
                [
                  -121.2755959334505,
                  37.83626343681897
                ],
                [
                  -121.27559923006457,
                  37.83626525448351
                ],
                [
                  -121.27560315280569,
                  37.83626593326018
                ],
                [
                  -121.27560710447196,
                  37.83626536981134
                ],
                [
                  -121.27561048345781,
                  37.83626364991702
                ],
                [
                  -121.27561277534322,
                  37.836261035415575
                ],
                [
                  -121.27561363120941,
                  37.83625792434123
                ],
                [
                  -121.27561292075876,
                  37.83625479032689
                ],
                [
                  -121.27561075215107,
                  37.83625211049782
                ],
                [
                  -121.27560745553731,
                  37.836250292833604
                ],
                [
                  -121.27560353279696,
                  37.836249614057095
                ],
                [
                  -121.2755995811315,
                  37.83625017750583
                ],
                [
                  -121.27559620214603,
                  37.836251897399855
                ],
                [
                  -121.27559391026037,
                  37.836254511900975
                ],
                [
                  -121.27559305439338,
                  37.836257622975154
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 2,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 2.0711030182624257
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27559023837102,
                  37.8362157645385
                ],
                [
                  -121.27559105066894,
                  37.836219347838664
                ],
                [
                  -121.27559353016179,
                  37.836222411842776
                ],
                [
                  -121.27559729936938,
                  37.83622449008389
                ],
                [
                  -121.27560178446392,
                  37.836225266168555
                ],
                [
                  -121.27560630263022,
                  37.83622462194486
                ],
                [
                  -121.27561016601823,
                  37.836222655490076
                ],
                [
                  -121.27561278646193,
                  37.836219666179176
                ],
                [
                  -121.27561376502271,
                  37.83621610910774
                ],
                [
                  -121.27561295272372,
                  37.8362125258077
                ],
                [
                  -121.27561047323036,
                  37.836209461804
                ],
                [
                  -121.27560670402315,
                  37.8362073835633
                ],
                [
                  -121.27560221892962,
                  37.83620660747885
                ],
                [
                  -121.27559770076437,
                  37.83620725170242
                ],
                [
                  -121.27559383737692,
                  37.83620921815681
                ],
                [
                  -121.27559121693282,
                  37.83621220746728
                ],
                [
                  -121.27559023837102,
                  37.8362157645385
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 3,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 2.5698431518390263
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27591279111121,
                  37.83633964478555
                ],
                [
                  -121.2759137990386,
                  37.83634409097411
                ],
                [
                  -121.27591687563739,
                  37.83634789280982
                ],
                [
                  -121.2759215525234,
                  37.83635047149754
                ],
                [
                  -121.27592711768308,
                  37.83635143445528
                ],
                [
                  -121.27593272387095,
                  37.836350635081416
                ],
                [
                  -121.27593751759535,
                  37.83634819507339
                ],
                [
                  -121.27594076905503,
                  37.83634448590044
                ],
                [
                  -121.27594198324489,
                  37.836340072250664
                ],
                [
                  -121.27594097531583,
                  37.83633562606231
                ],
                [
                  -121.2759378987163,
                  37.8363318242272
                ],
                [
                  -121.2759332218308,
                  37.83632924554014
                ],
                [
                  -121.2759276566727,
                  37.83632828258271
                ],
                [
                  -121.27592205048649,
                  37.83632908195638
                ],
                [
                  -121.27591725676287,
                  37.836331521963814
                ],
                [
                  -121.27591400530261,
                  37.8363352311361
                ],
                [
                  -121.27591279111121,
                  37.83633964478555
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 4,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 9.20709583396192
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27591096778579,
                  37.8362462839185
                ],
                [
                  -121.27591457893023,
                  37.83626221348385
                ],
                [
                  -121.27592560159285,
                  37.836275834495865
                ],
                [
                  -121.27594235767528,
                  37.83628507327719
                ],
                [
                  -121.27596229621437,
                  37.83628852330535
                ],
                [
                  -121.27598238174392,
                  37.836285659343886
                ],
                [
                  -121.27599955641949,
                  37.83627691740558
                ],
                [
                  -121.27601120555029,
                  37.83626362837291
                ],
                [
                  -121.27601555566329,
                  37.83624781538251
                ],
                [
                  -121.27601194449758,
                  37.83623188581969
                ],
                [
                  -121.27600092182502,
                  37.83621826481545
                ],
                [
                  -121.27598416574973,
                  37.836209026042546
                ],
                [
                  -121.27596422723074,
                  37.836205576018536
                ],
                [
                  -121.27594414172246,
                  37.836208439977455
                ],
                [
                  -121.27592696705685,
                  37.83621718190801
                ],
                [
                  -121.2759153179189,
                  37.83623047093225
                ],
                [
                  -121.27591096778579,
                  37.8362462839185
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 5,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 6.8016745526655145
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27577258231533,
                  37.836101511229586
                ],
                [
                  -121.27577524999523,
                  37.836113279081985
                ],
                [
                  -121.27578339287113,
                  37.836123341513854
                ],
                [
                  -121.27579577126518,
                  37.83613016661026
                ],
                [
                  -121.27581050067819,
                  37.836132715311116
                ],
                [
                  -121.27582533868822,
                  37.836130599599365
                ],
                [
                  -121.27583802634025,
                  37.8361241415732
                ],
                [
                  -121.27584663205306,
                  37.83611432440952
                ],
                [
                  -121.27584984568574,
                  37.83610264268349
                ],
                [
                  -121.27584717799422,
                  37.83609087483249
                ],
                [
                  -121.2758390351129,
                  37.83608081240485
                ],
                [
                  -121.27582665672278,
                  37.83607398731305
                ],
                [
                  -121.27581192732073,
                  37.83607143861445
                ],
                [
                  -121.27579708932228,
                  37.83607355432483
                ],
                [
                  -121.2757844016757,
                  37.83608001234675
                ],
                [
                  -121.27577579595899,
                  37.83608982950582
                ],
                [
                  -121.27577258231533,
                  37.836101511229586
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 6,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 3.8553942856780026
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27575712987996,
                  37.83612889731287
                ],
                [
                  -121.27575864200037,
                  37.8361355676867
                ],
                [
                  -121.27576325762779,
                  37.836141271377286
                ],
                [
                  -121.27577027407514,
                  37.83614514004913
                ],
                [
                  -121.2757786231517,
                  37.836146584731715
                ],
                [
                  -121.27578703378542,
                  37.83614538548505
                ],
                [
                  -121.2757942255328,
                  37.83614172488364
                ],
                [
                  -121.27579910351511,
                  37.836136160221194
                ],
                [
                  -121.275800925104,
                  37.836129538667436
                ],
                [
                  -121.27579941297988,
                  37.836122868294034
                ],
                [
                  -121.27579479735071,
                  37.836117164604815
                ],
                [
                  -121.27578778090462,
                  37.83611329593444
                ],
                [
                  -121.27577943183158,
                  37.83611185125258
                ],
                [
                  -121.27577102120159,
                  37.83611305049883
                ],
                [
                  -121.27576382945594,
                  37.83611671109886
                ],
                [
                  -121.27575895147241,
                  37.836122275759834
                ],
                [
                  -121.27575712987996,
                  37.83612889731287
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 7,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 0.2621119892549938
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27569967088486,
                  37.836145877988095
                ],
                [
                  -121.27569977368718,
                  37.83614633147869
                ],
                [
                  -121.27570008748394,
                  37.83614671924871
                ],
                [
                  -121.27570056450236,
                  37.83614698226366
                ],
                [
                  -121.27570113212073,
                  37.83614708048187
                ],
                [
                  -121.27570170392431,
                  37.836146998950554
                ],
                [
                  -121.27570219286119,
                  37.83614675008209
                ],
                [
                  -121.27570252449513,
                  37.83614637176445
                ],
                [
                  -121.2757026483379,
                  37.836145921593065
                ],
                [
                  -121.27570254553552,
                  37.83614546810245
                ],
                [
                  -121.27570223173876,
                  37.83614508033245
                ],
                [
                  -121.27570175472034,
                  37.83614481731751
                ],
                [
                  -121.27570118710199,
                  37.83614471909931
                ],
                [
                  -121.27570061529843,
                  37.83614480063061
                ],
                [
                  -121.27570012636156,
                  37.83614504949907
                ],
                [
                  -121.27569979472761,
                  37.83614542781671
                ],
                [
                  -121.27569967088486,
                  37.836145877988095
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 8,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 4.186601675659331
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27562155734964,
                  37.83614998677459
                ],
                [
                  -121.27562319935961,
                  37.83615723018529
                ],
                [
                  -121.27562821149404,
                  37.83616342387135
                ],
                [
                  -121.27563583070132,
                  37.836167624899794
                ],
                [
                  -121.2756448970259,
                  37.8361691937018
                ],
                [
                  -121.27565403020112,
                  37.83616789144129
                ],
                [
                  -121.27566183978293,
                  37.836163916375725
                ],
                [
                  -121.27566713683281,
                  37.83615787367315
                ],
                [
                  -121.27566911492328,
                  37.836150683280636
                ],
                [
                  -121.27566747290889,
                  37.83614343987046
                ],
                [
                  -121.27566246077241,
                  37.83613724618603
                ],
                [
                  -121.27565484156663,
                  37.83613304515931
                ],
                [
                  -121.2756457752462,
                  37.836131476358155
                ],
                [
                  -121.27563664207537,
                  37.83613277861816
                ],
                [
                  -121.27562883249564,
                  37.836136753682105
                ],
                [
                  -121.27562353544428,
                  37.836142796382944
                ],
                [
                  -121.27562155734964,
                  37.83614998677459
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 9,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 2.7794358243913715
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.2755868019777,
                  37.8361252797176
                ],
                [
                  -121.27558789208629,
                  37.836130088533416
                ],
                [
                  -121.27559121958039,
                  37.83613420045
                ],
                [
                  -121.27559627787937,
                  37.83613698946517
                ],
                [
                  -121.27560229690292,
                  37.836138030976485
                ],
                [
                  -121.27560836030888,
                  37.8361371664232
                ],
                [
                  -121.27561354499824,
                  37.83613452742577
                ],
                [
                  -121.27561706164883,
                  37.83613051574777
                ],
                [
                  -121.27561837488263,
                  37.83612574213101
                ],
                [
                  -121.2756172847721,
                  37.836120933315414
                ],
                [
                  -121.27561395727709,
                  37.83611682139954
                ],
                [
                  -121.27560889897877,
                  37.83611403238513
                ],
                [
                  -121.27560287995705,
                  37.8361129908742
                ],
                [
                  -121.27559681655302,
                  37.83611385542725
                ],
                [
                  -121.27559163186457,
                  37.83611649442399
                ],
                [
                  -121.27558811521332,
                  37.836120506101196
                ],
                [
                  -121.2755868019777,
                  37.8361252797176
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 10,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 2.7776820769196107
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.2756812759915,
                  37.836101713518495
                ],
                [
                  -121.27568236541813,
                  37.836106519299385
                ],
                [
                  -121.27568569081701,
                  37.836110628618904
                ],
                [
                  -121.2756907459265,
                  37.836113415870294
                ],
                [
                  -121.27569676115182,
                  37.836114456719606
                ],
                [
                  -121.27570282072907,
                  37.83611359270688
                ],
                [
                  -121.27570800214215,
                  37.836110955370295
                ],
                [
                  -121.27571151656765,
                  37.83610694622058
                ],
                [
                  -121.27571282896632,
                  37.83610217561459
                ],
                [
                  -121.27571173953774,
                  37.83609736983393
                ],
                [
                  -121.27570841413795,
                  37.83609326051513
                ],
                [
                  -121.27570335902912,
                  37.83609047326452
                ],
                [
                  -121.27569734380565,
                  37.83608943241558
                ],
                [
                  -121.27569128423032,
                  37.83609029642806
                ],
                [
                  -121.27568610281816,
                  37.83609293376394
                ],
                [
                  -121.27568258839199,
                  37.83609694291289
                ],
                [
                  -121.2756812759915,
                  37.836101713518495
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 11,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 4.661361886893401
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27569069376818,
                  37.836090170840656
                ],
                [
                  -121.27569252198829,
                  37.83609823565255
                ],
                [
                  -121.27569810250066,
                  37.83610513169878
                ],
                [
                  -121.2757065857234,
                  37.836109809118376
                ],
                [
                  -121.27571668016238,
                  37.83611155581612
                ],
                [
                  -121.27572684902961,
                  37.83611010587291
                ],
                [
                  -121.2757355442061,
                  37.836105680029576
                ],
                [
                  -121.27574144192947,
                  37.83609895208109
                ],
                [
                  -121.27574364432519,
                  37.836090946297084
                ],
                [
                  -121.27574181609961,
                  37.83608288148582
                ],
                [
                  -121.2757362355847,
                  37.836075985441596
                ],
                [
                  -121.27572775236378,
                  37.83607130802416
                ],
                [
                  -121.27571765792997,
                  37.83606956132747
                ],
                [
                  -121.27570748906818,
                  37.836071011270036
                ],
                [
                  -121.27569879389426,
                  37.83607543711138
                ],
                [
                  -121.27569289616906,
                  37.836082165057704
                ],
                [
                  -121.27569069376818,
                  37.836090170840656
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 12,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 4.76728304607297
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27564885320754,
                  37.83607374500049
                ],
                [
                  -121.2756507229657,
                  37.836081993071474
                ],
                [
                  -121.27565643028002,
                  37.83608904582
                ],
                [
                  -121.27566510626428,
                  37.83609382952859
                ],
                [
                  -121.27567543007808,
                  37.83609561592049
                ],
                [
                  -121.27568583001317,
                  37.8360941330335
                ],
                [
                  -121.27569472277249,
                  37.83608960662385
                ],
                [
                  -121.27570075451348,
                  37.83608272579683
                ],
                [
                  -121.27570300695864,
                  37.83607453809647
                ],
                [
                  -121.27570113719479,
                  37.836066290026174
                ],
                [
                  -121.27569542987776,
                  37.83605923727973
                ],
                [
                  -121.27568675389543,
                  37.83605445357339
                ],
                [
                  -121.27567643008703,
                  37.83605266718259
                ],
                [
                  -121.27566603015764,
                  37.83605415006891
                ],
                [
                  -121.275657137401,
                  37.83605867647648
                ],
                [
                  -121.2756511056581,
                  37.83606555730125
                ],
                [
                  -121.27564885320754,
                  37.83607374500049
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 13,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 5.12991454851732
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27566422793322,
                  37.836033201855614
                ],
                [
                  -121.27566623991865,
                  37.83604207732997
                ],
                [
                  -121.2756723813681,
                  37.83604966655701
                ],
                [
                  -121.2756817173022,
                  37.8360548141452
                ],
                [
                  -121.27569282640917,
                  37.83605673642033
                ],
                [
                  -121.27570401742679,
                  37.836055140733144
                ],
                [
                  -121.27571358662269,
                  37.83605027001274
                ],
                [
                  -121.2757200771728,
                  37.836042865782666
                ],
                [
                  -121.27572250095025,
                  37.836034055270396
                ],
                [
                  -121.27572048895821,
                  37.836025179796835
                ],
                [
                  -121.27571434750566,
                  37.8360175905722
                ],
                [
                  -121.27570501157379,
                  37.83601244298662
                ],
                [
                  -121.27569390247305,
                  37.8360105207128
                ],
                [
                  -121.27568271146203,
                  37.83601211639918
                ],
                [
                  -121.27567314226924,
                  37.836016987117176
                ],
                [
                  -121.2756666517169,
                  37.83602439134463
                ],
                [
                  -121.27566422793322,
                  37.836033201855614
                ]
              ]
            ]
          },
          "bbox": null
        },
        {
          "type": "Feature",
          "properties": {
            "type": "Tree",
            "id": 14,
            "maxHeightAboveGroundLevel": 0,
            "maxWidth": 4.177225273242035
          },
          "geometry": {
            "type": "Polygon",
            "coordinates": [
              [
                [
                  -121.27557995256883,
                  37.836081340602206
                ],
                [
                  -121.27558159089598,
                  37.83608856779093
                ],
                [
                  -121.27558659179718,
                  37.8360947476071
                ],
                [
                  -121.27559419393096,
                  37.83609893922936
                ],
                [
                  -121.27560323994105,
                  37.83610050452083
                ],
                [
                  -121.27561235265354,
                  37.83609920517991
                ],
                [
                  -121.27562014473959,
                  37.83609523901958
                ],
                [
                  -121.27562542992429,
                  37.83608920985214
                ],
                [
                  -121.27562740358651,
                  37.83608203556406
                ],
                [
                  -121.27562576525499,
                  37.836074808375855
                ],
                [
                  -121.27562076435174,
                  37.83606862856129
                ],
                [
                  -121.27561316221946,
                  37.836064436940774
                ],
                [
                  -121.27560411621349,
                  37.83606287165015
                ],
                [
                  -121.27559500350537,
                  37.836064170990554
                ],
                [
                  -121.27558721142138,
                  37.83606813714929
                ],
                [
                  -121.2755819262352,
                  37.83607416631498
                ],
                [
                  -121.27557995256883,
                  37.836081340602206
                ]
              ]
            ]
          },
          "bbox": null
        }
      ]
    }
    
    opened by jlconnor 4
  • Cannot import name 'SIGPIPE' from 'signal'

    Cannot import name 'SIGPIPE' from 'signal'

    Windows 10 64bit Python 3.8.6

    > svgis.exe draw GSHHS_i_L1.shp -o tmp.svg
    Traceback (most recent call last):
      File "d:\applications\python\lib\runpy.py", line 194, in _run_module_as_main
        return _run_code(code, main_globals, None,
      File "d:\applications\python\lib\runpy.py", line 87, in _run_code
        exec(code, run_globals)
      File "D:\Applications\packages\python\Scripts\svgis.exe\__main__.py", line 4, in <module>
      File "D:\Applications\packages\python\Lib\site-packages\svgis\cli.py", line 11, in <module>
        from signal import signal, SIGPIPE, SIG_DFL
    ImportError: cannot import name 'SIGPIPE' from 'signal' (d:\applications\python\lib\signal.py)
    
    opened by spajak 4
  • Readthedocs example fails in pyproj

    Readthedocs example fails in pyproj

    $ uname -a
    Linux minikat 5.9.3-arch1-1 #1 SMP PREEMPT Sun, 01 Nov 2020 12:58:59 +0000 x86_64 GNU/Linux
    
    $ pip freeze
    appdirs==1.4.4
    attrs==20.3.0
    certifi==2020.6.20
    click==7.1.2
    click-plugins==1.1.1
    cligj==0.7.0
    coverage==5.3
    cssselect==1.1.0
    distlib==0.3.1
    filelock==3.0.12
    Fiona==1.8.17
    lxml==4.6.1
    munch==2.5.0
    packaging==20.4
    pluggy==0.13.1
    py==1.9.0
    pyparsing==2.4.7
    pyproj==3.0.0
    Shapely==1.7.1
    six==1.15.0
    svgis==0.5.0
    tinycss2==1.1.0
    toml==0.10.2
    tox==3.20.1
    utm==0.6.0
    virtualenv==20.1.0
    webencodings==0.5.1```
    
    $ python -c"import sys;print(sys.version)"
    3.9.0 (default, Oct 16 2020, 23:11:00) 
    [GCC 10.2.0]
    
    $ cat europe-lakes 
    svgis draw ne_110m_admin_0_countries.shp ne_110m_lakes.shp \
        --crs EPSG:102013 \
        --scale 1000 \
        --simplify 90 \
        --style '.ne_110m_admin_0_countries { fill: tan } .Germany { fill: purple }' \
        --style '.ne_110m_lakes { fill: #09d; stroke: none; }' \
        --class-fields name \
        --bounds -10 30 40 65 \
        -o out.svg
    
     $ ls ne_110m*
    ne_110m_admin_0_countries.cpg  ne_110m_admin_0_countries.prj          ne_110m_admin_0_countries.shp  ne_110m_admin_0_countries.VERSION.txt
    ne_110m_admin_0_countries.dbf  ne_110m_admin_0_countries.README.html  ne_110m_admin_0_countries.shx
    
    $ source europe-lakes 
    Traceback (most recent call last):
      File "/home/robin/devel/svgis/bin/svgis", line 8, in <module>
        sys.exit(main())
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/click/core.py", line 829, in __call__
        return self.main(*args, **kwargs)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/click/core.py", line 782, in main
        rv = self.invoke(ctx)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/click/core.py", line 1259, in invoke
        return _process_result(sub_ctx.command.invoke(sub_ctx))
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/click/core.py", line 1066, in invoke
        return ctx.invoke(self.callback, **ctx.params)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/click/core.py", line 610, in invoke
        return callback(*args, **kwargs)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/cli.py", line 185, in draw
        click.echo(svgis.map(layer, **kwargs).encode('utf-8'), file=output)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/svgis.py", line 67, in map
        drawing = SVGIS(
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/svgis.py", line 453, in compose
        members = [svg.group(**self.compose_file(f, bounds, scalar=scalar, **kwargs))
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/svgis.py", line 453, in <listcomp>
        members = [svg.group(**self.compose_file(f, bounds, scalar=scalar, **kwargs))
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/svgis.py", line 349, in compose_file
        self.update_projected_bounds(self.in_crs, self.out_crs, unprojected_bounds, padding)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/svgis.py", line 228, in update_projected_bounds
        projected = bounding.transform(bounds, in_crs=in_crs, out_crs=out_crs)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/svgis/bounding.py", line 128, in transform
        transformer = Transformer.from_crs(in_crs, out_crs, skip_equivalent=True, always_xy=True)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/pyproj/transformer.py", line 370, in from_crs
        CRS.from_user_input(crs_to),
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/pyproj/crs/crs.py", line 440, in from_user_input
        return CRS(value, **kwargs)
      File "/home/robin/devel/svgis/lib/python3.9/site-packages/pyproj/crs/crs.py", line 296, in __init__
        super().__init__(projstring)
      File "pyproj/_crs.pyx", line 2302, in pyproj._crs._CRS.__init__
    pyproj.exceptions.CRSError: Invalid projection: +init=epsg:102013 +no_defs +type=crs: (Internal Proj Error: proj_create: crs not found)
    

    I ran all the cli tests with make test-cli and they seemed to work. However, make test had some failures.

    opened by MrBitBucket 2
  • convert underscores in attribute names to hyphens

    convert underscores in attribute names to hyphens

    This is currently only an issue with the fill_rule attribute, which generates fill_rule="evenodd", instead of the expected fill-rule="evenodd". But in general SVG uses hyphens in attribute names, which would presumably be reflected by underscores in Python variables.

    bug 
    opened by RossPaterson 1
  • Consider making license more visible

    Consider making license more visible

    I almost missed fact that this tool is GPLed ( https://github.com/fitnr/svgis/blob/master/src/svgis/graticule.py#L8 )

    Can you consider mentioning it in README and/or adding LICENSE file? Note that it is recommended by GPL authors (though they suggest naming file COPYING - https://www.gnu.org/licenses/gpl-howto.en.html )

    It would also allow GitHub to display license in project summary, see for example my https://github.com/matkoniecz/osm_bot_abstraction_layer

    opened by matkoniecz 1
  • add character encoding

    add character encoding

    The W3C validator reports:

    Warning: No Character encoding declared at document level

    This could be fixed by prepending

    <?xml version="1.0" encoding="UTF-8"?>
    

    to the SVG output.

    bug 
    opened by RossPaterson 2
  • option (or default?) to render points as zero-length lines

    option (or default?) to render points as zero-length lines

    Currently it is possible to control the display of lines and areas using the stylesheet, but point objects are always rendered as a circle with radius 1. If a point could be rendered as a zero-length line, i.e. a line with the point as start and end point, users would be able to style the line using the stroke-width property and setting stroke-linecap: round, producing a circle of the desired size.

    enhancement 
    opened by RossPaterson 4
Releases(v0.5.3)
  • v0.5.3(May 30, 2022)

  • v0.5.2(Sep 25, 2021)

    • Fix an error checking certain geometries (#8)
    • Migrate CI workflows from Travis to Github Actions
    • Remove Python 3.5 from list of supported versions
    Source code(tar.gz)
    Source code(zip)
  • v0.5.1(Feb 14, 2021)

  • v0.3.10(Mar 7, 2016)

    • Fix CDATA bug with svgis style
    • refactoring, PEP 8 formatting
    • Fix bug that ignored precision
    • Correctly identify and use projections in projected files
    Source code(tar.gz)
    Source code(zip)
  • v0.3.9(Mar 2, 2016)

    • Remove periods and number signs from classes and ids.
    • Refactor classing functions to svgis.style
    • Improve error messages when drawing features.
    Source code(tar.gz)
    Source code(zip)
  • v0.3.8(Feb 28, 2016)

  • v0.3.6(Feb 15, 2016)

    • Add svgis graticule command line tool
    • Ensure no repeated style rules when inlining CSS.
    • Round numbers at the last minute in the svg module. This is quicker.
    • Improve py 2/3 compatibility, esp. when testing.
    Source code(tar.gz)
    Source code(zip)
  • v0.3.5(Feb 14, 2016)

    • Fix problem reprojecting bounds with mixed projections.
    • Add cli tool for getting bounds of a layer
    • Repair --verbose option.
    • Add svgis bounds command line tool for checking the bounds of a layer.
    • Expand tests (coverage now above 90%)
    Source code(tar.gz)
    Source code(zip)
  • v0.3.3(Jan 31, 2016)

    • Switch from argparse to click for cli functions. Much better performance, same options.
    • Switch --simplify argument to accept an integer between 1-99
    • Change --project/-j option in svgis project to --method/-m
    • Remove lxml dependency for inlining CSS.
    • Completely refactor functions that parse XML to use ElementTree (quicker than minidom).
    • Add column names to class of layer group.
    • Prevent broken pipes
    • Squash several bugs related to setting class fields.
    • Squash bugs in drawing certain paths.
    • Remove duplicate/unused code.
    • Ensure use of unicode internally, fixed some small Py3 bugs.
    • More tests and more docs!
    Source code(tar.gz)
    Source code(zip)
  • v0.3.2(Jan 31, 2016)

  • v0.3.1(Jan 23, 2016)

    • Add option to clip files, requires Shapely
    • Add option to inline files, requires lxml
    • Add line simplification option using Visivalingam algorithm, requires numpy
    • Remove svgwrite as a dependency for faster file writing
    • Tests expanded and code refactored, crushing lots of bugs
    • --proj option can now read a file containing a proj4 string
    • Allow unicode in class and id fields
    Source code(tar.gz)
    Source code(zip)
Owner
Neil Freeman
Add a bio
Neil Freeman
Python Data Structures for Humans™.

Schematics Python Data Structures for Humans™. About Project documentation: https://schematics.readthedocs.io/en/latest/ Schematics is a Python librar

Schematics 2.5k Dec 28, 2022
Visualization of hidden layer activations of small multilayer perceptrons (MLPs)

MLP Hidden Layer Activation Visualization To gain some intuition about the internal representation of simple multi-layer perceptrons (MLPs) I trained

Andreas Köpf 7 Dec 30, 2022
A Graph Learning library for Humans

A Graph Learning library for Humans These novel algorithms include but are not limited to: A graph construction and graph searching class can be found

Richard Tjörnhammar 1 Feb 08, 2022
Pebble is a stat's visualization tool, this will provide a skeleton to develop a monitoring tool.

Pebble is a stat's visualization tool, this will provide a skeleton to develop a monitoring tool.

Aravind Kumar G 2 Nov 17, 2021
Glue is a python project to link visualizations of scientific datasets across many files.

Glue Glue is a python project to link visualizations of scientific datasets across many files. Click on the image for a quick demo: Features Interacti

675 Dec 09, 2022
Generate a 3D Skyline in STL format and a OpenSCAD file from Gitlab contributions

Your Gitlab's contributions in a 3D Skyline gitlab-skyline is a Python command to generate a skyline figure from Gitlab contributions as Github did at

Félix Gómez 70 Dec 22, 2022
Official Matplotlib cheat sheets

Official Matplotlib cheat sheets

Matplotlib Developers 6.7k Jan 09, 2023
A tool for creating Toontown-style nametags in Panda3D

Toontown-Nametag Toontown-Nametag is a tool for creating Toontown Online/Toontown Rewritten-style nametags in Panda3D. It contains a function, createN

BoggoTV 2 Dec 23, 2021
Create artistic visualisations with your exercise data (Python version)

strava_py Create artistic visualisations with your exercise data (Python version). This is a port of the R strava package to Python. Examples Facets A

Marcus Volz 53 Dec 28, 2022
An open-source plotting library for statistical data.

Lets-Plot Lets-Plot is an open-source plotting library for statistical data. It is implemented using the Kotlin programming language. The design of Le

JetBrains 820 Jan 06, 2023
Generate "Jupiter" plots for circular genomes

jupiter Generate "Jupiter" plots for circular genomes Description Python scripts to generate plots from ViennaRNA output. Written in "pidgin" python w

Robert Edgar 2 Nov 29, 2021
A central task in drug discovery is searching, screening, and organizing large chemical databases

A central task in drug discovery is searching, screening, and organizing large chemical databases. Here, we implement clustering on molecular similarity. We support multiple methods to provide a inte

NVIDIA Corporation 124 Jan 07, 2023
Simple spectra visualization tool for astronomers

SpecViewer A simple visualization tool for astronomers. Dependencies Python = 3.7.4 PyQt5 = 5.15.4 pyqtgraph == 0.10.0 numpy = 1.19.4 How to use py

5 Oct 07, 2021
Seismic Waveform Inversion Toolbox-1.0

Seismic Waveform Inversion Toolbox (SWIT-1.0)

Haipeng Li 98 Dec 29, 2022
A toolkit to generate MR sequence diagrams

mrsd: a toolkit to generate MR sequence diagrams mrsd is a Python toolkit to generate MR sequence diagrams, as shown below for the basic FLASH sequenc

Julien Lamy 3 Dec 25, 2021
Bcc2telegraf: An integration that sends ebpf-based bcc histogram metrics to telegraf daemon

bcc2telegraf bcc2telegraf is an integration that sends ebpf-based bcc histogram

Peter Bobrov 2 Feb 17, 2022
A visualization tool made in Pygame for various pathfinding algorithms.

Pathfinding-Visualizer 🚀 A visualization tool made in Pygame for various pathfinding algorithms. Pathfinding is closely related to the shortest path

Aysha sana 7 Jul 09, 2022
a simple REPL display lib for circuitpython

Circuitpython-termio-lib a simple REPL display lib for circuitpython Fonctions cls clear terminal screen and set cursor on top left : coords 0,0 usage

BeBoXoS 1 Nov 17, 2021
daily report of @arkinvest ETF activity + data collection

ark_invest daily weekday report of @arkinvest ETF activity + data collection This script was created to: Extract and save daily csv's from ARKInvest's

T D 27 Jan 02, 2023
This component provides a wrapper to display SHAP plots in Streamlit.

streamlit-shap This component provides a wrapper to display SHAP plots in Streamlit.

Snehan Kekre 30 Dec 10, 2022