用于处理大规模地理空间数据的集群计算框架
SedonaDB - A single-node analytical database engine with geospatial as a first-class citizen. Perfect for developers who want Sedona's spatial analytics power without distributed system complexity.
SpatialBench - A comprehensive benchmark for assessing geospatial SQL analytics query performance across database systems.
Read the full announcement blog post → | SedonaDB → | SpatialBench →
Everyone is welcome to join our community events. We have a community office hour every 4 weeks. Please register to the event you want to attend: https://bit.ly/3UBmxFY
Please join our Discord community!
For the mailing list, Please first subscribe and then post emails. To subscribe, please send an email (leave the subject and content blank) to [email protected]
Apache Sedona™ is a spatial computing engine that enables developers to easily process spatial data at any scale within modern cluster computing systems such as Apache Spark and Apache Flink. Sedona developers can express their spatial data processing tasks in Spatial SQL, Spatial Python or Spatial R. Internally, Sedona provides spatial data loading, indexing, partitioning, and query processing/optimization functionality that enable users to efficiently analyze spatial data at any scale.
Some of the key features of Apache Sedona include:
These are some of the key features of Apache Sedona, but it may offer additional capabilities depending on the specific version and configuration.
Apache Sedona is a widely used framework for working with spatial data, and it has many different use cases and applications. Some of the main use cases for Apache Sedona include:
This example loads NYC taxi trip records and taxi zone information stored as .CSV files on AWS S3 into Sedona spatial dataframes. It then performs spatial SQL query on the taxi trip datasets to filter out all records except those within the Manhattan area of New York. The example also shows a spatial join operation that matches taxi trip records to zones based on whether the taxi trip lies within the geographical extents of the zone. Finally, the last code snippet integrates the output of Sedona with GeoPandas and plots the spatial distribution of both datasets.
taxidf = (
sedona.read.format("csv")
.option("header", "true")
.option("delimiter", ",")
.load("s3a://your-directory/data/nyc-taxi-data.csv")
)
taxidf = taxidf.selectExpr(
"ST_Point(CAST(Start_Lon AS Decimal(24,20)), CAST(Start_Lat AS Decimal(24,20))) AS pickup",
"Trip_Pickup_DateTime",
"Payment_Type",
"Fare_Amt",
)
zoneDf = (
sedona.read.format("csv")
.option("delimiter", ",")
.load("s3a://your-directory/data/TIGER2018_ZCTA5.csv")
)
zoneDf = zoneDf.selectExpr("ST_GeomFromWKT(_c0) as zone", "_c1 as zipcode")
taxidf_mhtn = taxidf.where(
"ST_Contains(ST_PolygonFromEnvelope(-74.01,40.73,-73.93,40.79), pickup)"
)
taxiVsZone = sedona.sql(
"SELECT zone, zipcode, pickup, Fare_Amt FROM zoneDf, taxiDf WHERE ST_Contains(zone, pickup)"
)
zoneGpd = gpd.GeoDataFrame(zoneDf.toPandas(), geometry="zone")
taxiGpd = gpd.GeoDataFrame(taxidf.toPandas(), geometry="pickup")
zone = zoneGpd.plot(color="yellow", edgecolor="black", zorder=1)
zone.set_xlabel("Longitude (degrees)")
zone.set_ylabel("Latitude (degrees)")
zone.set_xlim(-74.1, -73.8)
zone.set_ylim(40.65,
暂无开放 Issues,或尚未同步最近议题。