当前位置: 首页 > news >正文

网站后台开发做什么网站免费客服系统

网站后台开发做什么,网站免费客服系统,苏州做网站的公司有哪些,做网站建设要学多久GIS大数据处理框架sedona(塞多纳)编程入门指导 简介 Apache Sedona™是一个用于处理大规模空间数据的集群计算系统。Sedona扩展了现有的集群计算系统,如Apache Spark和Apache Flink,使用一组开箱即用的分布式空间数据集和空间SQL,可以有效地…

GIS大数据处理框架sedona(塞多纳)编程入门指导

简介

Apache Sedona™是一个用于处理大规模空间数据的集群计算系统。Sedona扩展了现有的集群计算系统,如Apache Spark和Apache Flink,使用一组开箱即用的分布式空间数据集和空间SQL,可以有效地加载、处理和分析跨机器的大规模空间数据。码云镜像 码云sedona文档持续更新中

代码结构

在这里插入图片描述

  1. common java核心包,对底层JTS、geotools坐标系转换等操作方法的接口包装,并提供了circle(扩展JTS功能),距离计算方法:Haversine方式,Spheroid椭球;WKT,GeoJSON等格式转换;索引支持QUADTREE,RTREE;geohash计算;供spark、flink等上层应用调用使用
  2. core 与spark适配核心包,封装提供基础对象SpatialRDD,PointRDD,LineStingRDD,CircleRDD,PolygonRDD;几何链接操作joinJudgement(通过几何拓扑关系),knnJudgement(几何距离),rangeJudgement(treeIndex索引范围查询);数据读取转换formatMapper:cvs,wkt,geoJson,shapefile,netcdf;spatialPartitioning分区器:QuadtreePartitioning,KDBTreePartitioner等
  3. flink flink适配,调用common下的functions里面提供的函数方法
  4. python-adapter python适配,调用common下的functions里面提供的函数方法
  5. sql spark-sql适配,调用common下的functions里面提供的函数方法

使用说明

在spark下面的使用说明

1.安装

具体参看

<dependency><groupId>org.apache.sedona</groupId><artifactId>sedona-spark-shaded-3.0_2.12</artifactId><version>1.4.0</version>
</dependency>
<dependency><groupId>org.apache.sedona</groupId><artifactId>sedona-viz-3.0_2.12</artifactId><version>1.4.0</version>
</dependency>
<!-- Optional: https://mvnrepository.com/artifact/org.datasyslab/geotools-wrapper -->
<dependency><groupId>org.datasyslab</groupId><artifactId>geotools-wrapper</artifactId><version>1.4.0-28.2</version>
</dependency>

2.初始化SparkSession

SparkSession sparkSession = SparkSession.builder()
.master("local[*]") // Delete this if run in cluster mode
.appName("readTestScala") // Change this to a proper name
// Enable Sedona custom Kryo serializer
.config("spark.serializer", KryoSerializer.class.getName) // org.apache.spark.serializer.KryoSerializer
.config("spark.kryo.registrator", SedonaKryoRegistrator.class.getName)
.getOrCreate() // org.apache.sedona.core.serde.SedonaKryoRegistrator

3.安装函数

SedonaSQLRegistrator.registerAll(sparkSession)

4.使用例子

4.1 dataFrame方式加载数据

4.1.1 从文件加载数据

假设有一个WKT数据格式的tsv文件,存储位置/Download/usa-county.tsv

POLYGON (..., ...)  Cuming County   
POLYGON (..., ...)  Wahkiakum County
POLYGON (..., ...)  De Baca County
POLYGON (..., ...)  Lancaster County

加载

Dataset<Row> rawDf = sparkSession.read.format("csv").option("delimiter", "\t").option("header", "false").load("/Download/usa-county.tsv")
rawDf.createOrReplaceTempView("rawdf")
rawDf.show()

结果展示

|                 _c0|_c1|_c2|     _c3|  _c4|        _c5|                 _c6|_c7|_c8|  _c9|_c10| _c11|_c12|_c13|      _c14|    _c15|       _c16|        _c17|
+--------------------+---+---+--------+-----+-----------+--------------------+---+---+-----+----+-----+----+----+----------+--------+-----------+------------+
|POLYGON ((-97.019...| 31|039|00835841|31039|     Cuming|       Cuming County| 06| H1|G4020|null| null|null|   A|1477895811|10447360|+41.9158651|-096.7885168|
|POLYGON ((-123.43...| 53|069|01513275|53069|  Wahkiakum|    Wahkiakum County| 06| H1|G4020|null| null|null|   A| 682138871|61658258|+46.2946377|-123.4244583|
|POLYGON ((-104.56...| 35|011|00933054|35011|    De Baca|      De Baca County| 06| H1|G4020|null| null|null|   A|6015539696|29159492|+34.3592729|-104.3686961|
|POLYGON ((-96.910...| 31|109|00835876|31109|  Lancaster|    Lancaster County| 06| H1|G4020| 339|30700|null|   A|2169240202|22877180|+40.7835474|-096.6886584|

4.1.1 通过ST_函数

SELECT ST_GeomFromWKT(_c0) AS countyshape, _c1, _c2

4.1.3 从GeoJSON文件读取

String schema = "type string, crs string, totalFeatures long, features array<struct<type string, geometry string, properties map<string, string>>>";
sparkSession.read.schema(schema).json(geojson_path).selectExpr("explode(features) as features") // Explode the envelope to get one feature per row..select("features.*") // Unpack the features struct..withColumn("geometry", expr("ST_GeomFromGeoJSON(geometry)")) // Convert the geometry string..printSchema();

4.1.4 从数据库读取

// For any JDBC data source, inluding Postgis.
Dataset<Row> df = sparkSession.read().format("jdbc")// Other options..option("query", "SELECT id, ST_AsBinary(geom) as geom FROM my_table").load().withColumn("geom", expr("ST_GeomFromWKB(geom)"))// This is a simplified version that works for Postgis.
Dataset<Row> df = sparkSession.read().format("jdbc")// Other options..option("dbtable", "my_table").load().withColumn("geom", expr("ST_GeomFromWKB(geom)"))

4.2 CRS(坐标系)转换

SELECT ST_Transform(countyshape, "epsg:4326", "epsg:3857") AS newcountyshape, _c1, _c2, _c3, _c4, _c5, _c6, _c7
FROM spatialdf

4.3 地理空间查询

4.3.1 范围查询

ST_Contains, ST_Intersects, ST_Within

SELECT *
FROM spatialdf
WHERE ST_Contains (ST_PolygonFromEnvelope(1.0,100.0,1000.0,1100.0), newcountyshape)

4.3.2 距离查询

ST_Distance

SELECT countyname, ST_Distance(ST_PolygonFromEnvelope(1.0,100.0,1000.0,1100.0), newcountyshape) AS distance
FROM spatialdf
ORDER BY distance DESC
LIMIT 5

4.3.3 关联查询

SELECT *
FROM polygondf, pointdf
WHERE ST_Contains(polygondf.polygonshape,pointdf.pointshape)SELECT *
FROM polygondf, pointdf
WHERE ST_Intersects(polygondf.polygonshape,pointdf.pointshape)SELECT *
FROM pointdf, polygondf
WHERE ST_Within(pointdf.pointshape, polygondf.polygonshape)SELECT *
FROM pointdf1, pointdf2
WHERE ST_Distance(pointdf1.pointshape1,pointdf2.pointshape2) < 2

5 存储

已入postgis为例

my_postgis_db# create table my_table (id int8, geom geometry);df.withColumn("geom", expr("ST_AsEWKB(geom)").write.format("jdbc").option("truncate","true") // Don't let Spark recreate the table.// Other options..save()// If you didn't create the table before writing you can change the type afterward.
my_postgis_db# alter table my_table alter column geom type geometry;

6 SpatialRDD与DataFrame相好转换

6.1 SpatialRDD转DataFrame

Dataset<Row> spatialDf = Adapter.toDf(spatialRDD, sparkSession)

6.2 DataFrame转SpatialRDD

val schema = StructType(Array(StructField("county", GeometryUDT, nullable = true),StructField("name", StringType, nullable = true),StructField("price", DoubleType, nullable = true),StructField("age", IntegerType, nullable = true)
))
val spatialDf = Adapter.toDf(spatialRDD, schema, sparkSession)
http://www.hkea.cn/news/240213/

相关文章:

  • 营销网站定制的优势成品网站源码的优化技巧
  • 高职学院网站建设方案广告制作
  • table表格 做的网站营销案例分析报告模板
  • pc端网站做移动适配教育培训机构管理系统
  • 页游传奇排行榜无锡seo优化公司
  • 广西南宁网站设计百度seo算法
  • 网站建设服务怎么样近期国内热点新闻事件
  • 阿里巴巴网站国际站建设seo托管服务
  • 企业网站优化之如何做需求分析网奇seo赚钱培训
  • 施工企业会计制度收入确认规定百度自然排名优化
  • 校园网站建设意义网络营销的特点有哪些
  • 内江做网站哪里便宜google搜索关键词热度
  • 福建省建设银行招聘网站网络推广员压力大吗
  • 动态网站订单怎么做搜索引擎优化营销
  • html5行业网站最近有哪些新闻
  • 做网站业务的怎么寻找客户在哪里打广告效果最好
  • 广东深圳seo服务内容
  • 做网站怎么备案网络服务有限公司
  • 网站主页特效欣赏百度官网下载电脑版
  • php mysql开发网站开发任何小说都能搜到的软件
  • the7 wordpress主题宁波seo外包费用
  • 云南建筑培训网seo刷点击软件
  • 男女做暖网站h5页面制作平台
  • 可以做puzzle的网站百度关键词排名提升工具
  • 竞网网站建设南宁网站seo大概多少钱
  • 114黄页信息网宝鸡seo培训
  • 东南亚做棋牌网站挖掘爱站网
  • 中国工程建设招标网官方网站谷歌查询关键词的工具叫什么
  • wordpress管理员密码忘记成都seo招聘
  • 武汉企业建站系统模板下载官方正版百度