{"library":"spatial-access","title":"Spatial Access","type":"library","description":"spatial-access is a Python package designed for measuring spatial accessibility to services. It provides tools to construct road networks, represent facilities and demand points, and compute various accessibility metrics like the Two-Step Floating Catchment Area (2SFCA) method. The current version is 1.0.2, and releases are made as needed to address issues and introduce features.","language":"python","status":"active","last_verified":"Thu Apr 16","install":{"commands":["pip install spatial-access"],"cli":null},"imports":["import spatial_access as sa","network = sa.Network(nodes, edges, 'weight_col')","access_model = sa.Access(network, facilities, demand, 'facility_col', 'demand_col')"],"auth":{"required":false,"env_vars":[]},"links":{"homepage":null,"github":"https://github.com/GeoDaCenter/spatial_access","docs":null,"changelog":null,"pypi":"https://pypi.org/project/spatial-access/","npm":null,"openapi_spec":null,"status_page":null,"smithery":null},"quickstart":{"code":"from shapely.geometry import Point, LineString\nimport geopandas as gpd\nimport pandas as pd\nimport spatial_access as sa\n\n# 1. Create dummy network data (nodes and edges)\n# Nodes represent intersections or endpoints\nnodes_df = pd.DataFrame({\n    'id': [0, 1, 2, 3],\n    'geometry': [Point(0, 0), Point(1, 0), Point(0, 1), Point(1, 1)]\n})\nnodes = gpd.GeoDataFrame(nodes_df, crs=\"EPSG:4326\")\n\n# Edges represent road segments connecting nodes\nedges_df = pd.DataFrame({\n    'id': [0, 1, 2, 3],\n    'from': [0, 0, 1, 2],\n    'to': [1, 2, 3, 3],\n    'length': [1.0, 1.0, 1.0, 1.0], # A 'weight' or 'cost' column\n    'geometry': [\n        LineString([(0, 0), (1, 0)]),\n        LineString([(0, 0), (0, 1)]),\n        LineString([(1, 0), (1, 1)]),\n        LineString([(0, 1), (1, 1)])\n    ]\n})\nedges = gpd.GeoDataFrame(edges_df, crs=\"EPSG:4326\")\n\n# 2. Create dummy facility and demand data\n# Facilities (e.g., hospitals, stores) with capacity\nfacilities_df = pd.DataFrame({\n    'id': [0, 1],\n    'capacity': [10, 15],\n    'geometry': [Point(0.1, 0.1), Point(0.9, 0.9)]\n})\nfacilities = gpd.GeoDataFrame(facilities_df, crs=\"EPSG:4326\")\n\n# Demand points (e.g., population centroids) with demand\ndemand_df = pd.DataFrame({\n    'id': [0, 1],\n    'demand': [5, 8],\n    'geometry': [Point(0.2, 0.2), Point(0.8, 0.8)]\n})\ndemand = gpd.GeoDataFrame(demand_df, crs=\"EPSG:4326\")\n\n\n# 3. Initialize Network and Access objects\n# The 'length' column is used as the weight for shortest path calculations\nnetwork = sa.Network(nodes, edges, \"length\")\n\n# Create the Access model, linking network, facilities, and demand\naccess_model = sa.Access(network, facilities, demand, \"capacity\", \"demand\")\n\n# 4. Compute 2SFCA accessibility\n# Using a distance threshold of 10 units (arbitrary for dummy data)\n# and a Gaussian weight function. The result is (Si, Dj) where Si is \n# accessibility for demand points and Dj for facilities.\nprint(\"Calculating 2SFCA accessibility...\")\naccessibility_scores = access_model.two_sfca(10, weight_function=\"gaussian\")\n\n# Print accessibility scores for demand points\nprint(\"\\nAccessibility scores for demand points (Si):\")\nprint(accessibility_scores[0].head())","lang":"python","description":"This quickstart demonstrates how to create a simple road network, define facilities and demand points using GeoDataFrames, and then compute spatial accessibility using the Two-Step Floating Catchment Area (2SFCA) method. It uses dummy data to ensure the example is runnable out-of-the-box.","tag":null,"tag_description":null,"last_tested":null,"results":[]},"compatibility":null}