GeoJSON Layer#

The GeoJSON class in ipyopenlayers allows you to display GeoJSON data on your map. GeoJSON is a widely-used format for encoding a variety of geographic data structures, including points, lines, and polygons.

The GeoJSON layer can be styled dynamically and its visibility can be controlled. This makes it a powerful tool for visualizing geographic data in a web map.

Key Features#

  • GeoJSON Support: Integrate and display GeoJSON data on your map.

  • Custom Styling: Style features based on their type with flexible options.

  • Visibility Control: Show or hide the layer as needed.

Example#

Example 1

Below is an example of how to use the GeoJSON class to add a GeoJSON layer to your map:

from ipyopenlayers import Map, GeoJSON,RasterTileLayer

# Create a map centered at the specified coordinates with a zoom level of 4
m = Map(center=[-75.05936205186516, 41.214094701931344], zoom=4)

# Add layer
layer=RasterTileLayer()
m.add_layer(layer)

# Define GeoJSON data and style
geojson_data = {
    'type': 'FeatureCollection',
    'features': [
        # Point feature
        {
            'type': 'Feature',
            'geometry': {
                'type': 'Point',
                'coordinates': [-74.006, 40.7128],  # Longitude, Latitude for New York City
            },
            'properties': {
                'name': 'New York City',
                'population': 8419000,
                'description': 'The largest city in the United States by population.',
            },
        },
        # LineString feature
        {
            'type': 'Feature',
            'geometry': {
                'type': 'LineString',
                'coordinates': [
                    [-74.006, 40.7128],  # Start point (New York City)
                    [-118.2437, 34.0522]  # End point (Los Angeles)
                ],
            },
            'properties': {
                'name': 'Route from NYC to LA',
                'distance_km': 3940,
            },
        },
        # Polygon feature
        {
            'type': 'Feature',
            'geometry': {
                'type': 'Polygon',
                'coordinates': [
                    [
                        [-73.935242, 40.730610],  # Point A
                        [-73.935242, 40.800610],  # Point B
                        [-73.865242, 40.800610],  # Point C
                        [-73.865242, 40.730610],  # Point D
                        [-73.935242, 40.730610],  # Point A (closed loop)
                    ]
                ],
            },
            'properties': {
                'name': 'Sample Polygon Area',
                'type': 'Park',
                'description': 'A polygon representing a park area.',
            },
        },
        # MultiPolygon feature
        {
            'type': 'Feature',
            'geometry': {
                'type': 'MultiPolygon',
                'coordinates': [
                    [
                        [
                            [-73.945242, 40.710610],  # Polygon 1
                            [-73.945242, 40.780610],
                            [-73.875242, 40.780610],
                            [-73.875242, 40.710610],
                            [-73.945242, 40.710610],
                        ]
                    ],
                    [
                        [
                            [-74.015242, 40.710610],  # Polygon 2
                            [-74.015242, 40.780610],
                            [-73.945242, 40.780610],
                            [-73.945242, 40.710610],
                            [-74.015242, 40.710610],
                        ]
                    ],
                ],
            },
            'properties': {
                'name': 'MultiPolygon Example',
                'description': 'An example of a MultiPolygon feature.',
            },
        },
    ],
}


geojson_style = {
    'Point': {
        'radius': 8,
        'fillColor': '#ff7800',
        'color': '#000',
        'weight': 2,
        'opacity': 1,
        'fillOpacity': 0.8,
    },
    'LineString': {
        'color': '#00f',
        'weight': 3,
        'opacity': 0.8,
    },
    'Polygon': {
        'strokeColor': '#00f',
        'strokeWidth': 2,
        'strokeOpacity': 0.8,
        'fillColor': '#ff7800',
        'fillOpacity': 0.5,
    },
    'MultiPolygon': {
        'strokeColor': '#f00',
        'strokeWidth': 2,
        'strokeOpacity': 0.8,
        'fillColor': '#0f0',
        'fillOpacity': 0.4,
    },
}

# Create and add a GeoJSON layer to the map
widget = GeoJSON(
    data=geojson_data,
    style=geojson_style,
    visible=True
)
m.add_layer(widget)

# Display the map
m

Example 2

Below is second example of how to use the GeoJSON class to add a Json file data to your map:

import requests
import os
import json
from ipyopenlayers import Map, GeoJSON,RasterTileLayer

# the GeoJSON file
if not os.path.exists('europe_110.geo.json'):
    url = 'https://raw.githubusercontent.com/jupyter-widgets/ipyleaflet/master/examples/europe_110.geo.json'
    r = requests.get(url)
    with open('europe_110.geo.json', 'w') as f:
        f.write(r.content.decode("utf-8"))

# Read the GeoJSON file
with open('europe_110.geo.json', 'r') as f:
    data = json.load(f)

# Create a map with coordinates centered on Europe
m = Map(center=[2.292993630573249, 49.62376705148722], zoom=0)  # Note the coordinate order: [latitude, longitude]

# Add the GeoJSON layer with the defined style
geo_json = GeoJSON(
    data=data
)

# Add layer
layer=RasterTileLayer()
m.add_layer(layer)


# Add the GeoJSON layer to the map
m.add_layer(geo_json)

m

Attributes#

class ipyopenlayers.openlayers.GeoJSON(*args: t.Any, **kwargs: t.Any)[source]#

GeoJSON class for GeoJSON data layers.

data#

The GeoJSON data for the layer.

Type:

dict

style#

Style options for the GeoJSON data.

Type:

dict

visible#

Whether the layer is visible or not.

Type:

bool, default True