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
Here are my graphs for hw_02

Let's Have A Look At Some Graphs! Graph 1: State Mentions in Congressperson's Tweets on 10/01/2017 The graph below uses this data set to demonstrate h

7 Sep 02, 2022
Sprint planner considering JIRA issues and google calendar meetings schedule.

Sprint planner Sprint planner is a Python script for planning your Jira tasks based on your calendar availability. Installation Use the package manage

Apptension 2 Dec 05, 2021
股票行情实时数据接口-A股,完全免费的沪深证券股票数据-中国股市,python最简封装的API接口

股票行情实时数据接口-A股,完全免费的沪深证券股票数据-中国股市,python最简封装的API接口,包含日线,历史K线,分时线,分钟线,全部实时采集,系统包括新浪腾讯双数据核心采集获取,自动故障切换,STOCK数据格式成DataFrame格式,可用来查询研究量化分析,股票程序自动化交易系统.为量化研究者在数据获取方面极大地减轻工作量,更加专注于策略和模型的研究与实现。

dev 572 Jan 08, 2023
Simple and fast histogramming in Python accelerated with OpenMP.

pygram11 Simple and fast histogramming in Python accelerated with OpenMP with help from pybind11. pygram11 provides functions for very fast histogram

Doug Davis 28 Dec 14, 2022
Visualize the training curve from the *.csv file (tensorboard format).

Training-Curve-Vis Visualize the training curve from the *.csv file (tensorboard format). Feature Custom labels Curve smoothing Support for multiple c

Luckky 7 Feb 23, 2022
A napari plugin for visualising and interacting with electron cryotomograms.

napari-tomoslice A napari plugin for visualising and interacting with electron cryotomograms. Installation You can install napari-tomoslice via pip: p

3 Jan 03, 2023
:small_red_triangle: Ternary plotting library for python with matplotlib

python-ternary This is a plotting library for use with matplotlib to make ternary plots plots in the two dimensional simplex projected onto a two dime

Marc 611 Dec 29, 2022
Arras.io Highest Scores Over Time Bar Chart Race

Arras.io Highest Scores Over Time Bar Chart Race This repo contains a python script (make_racing_bar_chart.py) that can generate a csv file which can

Road 2 Jan 16, 2022
649 Pokémon palettes as CSVs, with a Python lib to turn names/IDs into palettes, or MatPlotLib compatible ListedColormaps.

PokePalette 649 Pokémon, broken down into CSVs of their RGB colour palettes. Complete with a Python library to convert names or Pokédex IDs into eithe

11 Dec 05, 2022
Handout for the tutorial "Creating publication-quality figures with matplotlib"

Handout for the tutorial "Creating publication-quality figures with matplotlib"

JB Mouret 1.9k Jan 02, 2023
D-Analyst : High Performance Visualization Tool

D-Analyst : High Performance Visualization Tool D-Analyst is a high performance data visualization built with python and based on OpenGL. It allows to

4 Apr 14, 2022
Tandem Mass Spectrum Prediction with Graph Transformers

MassFormer This is the original implementation of MassFormer, a graph transformer for small molecule MS/MS prediction. Check out the preprint on arxiv

Röst Lab 13 Oct 27, 2022
Monochromatic colorscheme for matplotlib with opinionated sensible default

Monochromatic colorscheme for matplotlib with opinionated sensible default If you need a simple monochromatic colorscheme for your matplotlib figures,

Aria Ghora Prabono 2 May 06, 2022
Python package to visualize and cluster partial dependence.

partial_dependence A python library for plotting partial dependence patterns of machine learning classifiers. The technique is a black box approach to

NYU Visualization Lab 25 Nov 14, 2022
Generating interfaces(CLI, Qt GUI, Dash web app) from a Python function.

oneFace is a Python library for automatically generating multiple interfaces(CLI, GUI, WebGUI) from a callable Python object. oneFace is an easy way t

NaNg 31 Oct 21, 2022
OpenStats is a library built on top of streamlit that extracts data from the Github API and shows the main KPIs

Open Stats Discover and share the KPIs of your OpenSource project. OpenStats is a library built on top of streamlit that extracts data from the Github

Pere Miquel Brull 4 Apr 03, 2022
Altair extension for saving charts in a variety of formats.

Altair Saver This packge provides extensions to Altair for saving charts to a variety of output types. Supported output formats are: .json/.vl.json: V

Altair 85 Dec 09, 2022
Turn a STAC catalog into a dask-based xarray

StackSTAC Turn a list of STAC items into a 4D xarray DataArray (dims: time, band, y, x), including reprojection to a common grid. The array is a lazy

Gabe Joseph 148 Dec 19, 2022
Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python

Petrel Tools for writing, submitting, debugging, and monitoring Storm topologies in pure Python. NOTE: The base Storm package provides storm.py, which

AirSage 247 Dec 18, 2021
Set of matplotlib operations that are not trivial

Matplotlib Snippets This repository contains a set of matplotlib operations that are not trivial. Histograms Histogram with bins adapted to log scale

Raphael Meudec 1 Nov 15, 2021