日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Geospark-SQL加载SHP数据

發(fā)布時間:2025/1/21 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Geospark-SQL加载SHP数据 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

title: (六)Geospark SQL加載SHP數(shù)據(jù)(JAVA版)
date: 2021-05-08 09:29:06
tags:

  • GeoSpark

GeoSpark SQL默認(rèn)是無法讀取Shp和GeoJson格式的矢量數(shù)據(jù)的,必須要通過RDD讀取,然后利用GeoSpark提供的Adapter在RDD和DataFrame之間互轉(zhuǎn)。

接下來我們還是利用我們上一節(jié)的公園的數(shù)據(jù)來學(xué)習(xí)。

初始化一個SparkSession

SparkSession spark = SparkSession.builder().config("spark.serializer","org.apache.spark.serializer.KryoSerializer").config("spark.kryo.registrator", "org.datasyslab.geospark.serde.GeoSparkKryoRegistrator").master("local[*]").appName("Learn06").getOrCreate();GeoSparkSQLRegistrator.registerAll(spark); GeoSparkVizRegistrator.registerAll(spark);

利用RDD讀取shp

JavaSparkContext context = new JavaSparkContext(spark.sparkContext()); String inputPath = Learn06.class.getResource("/parks").toString(); SpatialRDD<Geometry> rdd = ShapefileReader.readToGeometryRDD(new JavaSparkContext(spark.sparkContext()), inputPath);

將RDD轉(zhuǎn)為DataFrame

Dataset<Row> rawDF = Adapter.toDf(rdd, spark); rawDF.createOrReplaceTempView("park"); rawDF.show(); rawDF.printSchema(); +--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ | geometry|ParkId|RefParkId| ParkName| Neighborho| EWStreet| NSStreet|DogPark|Washrooms|SpecialFea| +--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ |POLYGON ((-123.15...| 1| -9999| | Kitsilano| | | N| | | |POLYGON ((-123.15...| 2| 208| Rosemary Brown Park| Kitsilano| W 11th Avenue| Vine Street| N| N| N| |MULTIPOLYGON (((-...| 3| 141| Tea Swamp Park|Mount Pleasant| E 15th Avenue| Sophia Street| N| N| N| |MULTIPOLYGON (((-...| 4| -9999| | Strathcona| | | N| | | |MULTIPOLYGON (((-...| 5| 202| Morton Park| West End| Morton Avenue| Denman Street| N| N| N| |MULTIPOLYGON (((-...| 6| -9999| Mcbride Park| Kitsilano| | | N| | | |MULTIPOLYGON (((-...| 7| -9999| Granville Park| Fairview| | | N| | | |MULTIPOLYGON (((-...| 8| -9999| |Mount Pleasant| | | N| | | |MULTIPOLYGON (((-...| 9| 15| Creekside Park|Mount Pleasant|Terminal Avenue| Quebec Street| N| N| Y| |MULTIPOLYGON (((-...| 10| 134|China Creek South...|Mount Pleasant| E 10th Avenue| Clark Drive| N| N| N| |MULTIPOLYGON (((-...| 11| 200|Barclay Heritage ...| West End| Barclay Street| Nicola Street| N| Y| N| |POLYGON ((-123.15...| 12| 233|Arbutus Greenway ...| Kitsilano| W 11th Avenue| Arbutus Street| N| N| N| |POLYGON ((-123.18...| 13| 106| Almond Park| Kitsilano| W 12th Avenue| Dunbar Street| N| N| N| |POLYGON ((-123.15...| 14| 109| Delamont Park| Kitsilano| W 7th Avenue| Arbutus Street| N| N| N| |POLYGON ((-123.15...| 15| -9999| | Kitsilano| | | N| | | |POLYGON ((-123.14...| 16| 118| Seaforth Peace Park| Kitsilano|Cornwall Avenue|Chestnut Street| N| N| N| |POLYGON ((-123.10...| 17| 139| Mount Pleasant Park|Mount Pleasant| W 16th Avenue| Ontario Street| N| N| N| |POLYGON ((-123.10...| 18| 138| Major Matthews Park|Mount Pleasant| W 11th Avenue|Manitoba Street| N| N| N| |POLYGON ((-123.10...| 19| 137|Jonathan Rogers Park|Mount Pleasant| W 7th Avenue|Manitoba Street| N| Y| N| |POLYGON ((-123.09...| 20| 183| Thornton Park| Strathcona|Terminal Avenue| Main Street| N| N| N| +--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ only showing top 20 rowsroot|-- geometry: string (nullable = true)|-- ParkId: string (nullable = true)|-- RefParkId: string (nullable = true)|-- ParkName: string (nullable = true)|-- Neighborho: string (nullable = true)|-- EWStreet: string (nullable = true)|-- NSStreet: string (nullable = true)|-- DogPark: string (nullable = true)|-- Washrooms: string (nullable = true)|-- SpecialFea: string (nullable = true)

從輸出結(jié)果中可以看到,轉(zhuǎn)為dataframe后,默認(rèn)是沒有Geometry的,需要我們自己構(gòu)建。

// 構(gòu)建幾何圖形(Geometry) String sqlText = "select ST_GeomFromWKT(geometry) as shape, * from park"; rawDF = spark.sql(sqlText); rawDF.createOrReplaceTempView("park"); rawDF.show(); rawDF.printSchema(); +--------------------+--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ | shape| geometry|ParkId|RefParkId| ParkName| Neighborho| EWStreet| NSStreet|DogPark|Washrooms|SpecialFea| +--------------------+--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ |POLYGON ((-123.15...|POLYGON ((-123.15...| 1| -9999| | Kitsilano| | | N| | | |POLYGON ((-123.15...|POLYGON ((-123.15...| 2| 208| Rosemary Brown Park| Kitsilano| W 11th Avenue| Vine Street| N| N| N| |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 3| 141| Tea Swamp Park|Mount Pleasant| E 15th Avenue| Sophia Street| N| N| N| |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 4| -9999| | Strathcona| | | N| | | |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 5| 202| Morton Park| West End| Morton Avenue| Denman Street| N| N| N| |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 6| -9999| Mcbride Park| Kitsilano| | | N| | | |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 7| -9999| Granville Park| Fairview| | | N| | | |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 8| -9999| |Mount Pleasant| | | N| | | |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 9| 15| Creekside Park|Mount Pleasant|Terminal Avenue| Quebec Street| N| N| Y| |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 10| 134|China Creek South...|Mount Pleasant| E 10th Avenue| Clark Drive| N| N| N| |MULTIPOLYGON (((-...|MULTIPOLYGON (((-...| 11| 200|Barclay Heritage ...| West End| Barclay Street| Nicola Street| N| Y| N| |POLYGON ((-123.15...|POLYGON ((-123.15...| 12| 233|Arbutus Greenway ...| Kitsilano| W 11th Avenue| Arbutus Street| N| N| N| |POLYGON ((-123.18...|POLYGON ((-123.18...| 13| 106| Almond Park| Kitsilano| W 12th Avenue| Dunbar Street| N| N| N| |POLYGON ((-123.15...|POLYGON ((-123.15...| 14| 109| Delamont Park| Kitsilano| W 7th Avenue| Arbutus Street| N| N| N| |POLYGON ((-123.15...|POLYGON ((-123.15...| 15| -9999| | Kitsilano| | | N| | | |POLYGON ((-123.14...|POLYGON ((-123.14...| 16| 118| Seaforth Peace Park| Kitsilano|Cornwall Avenue|Chestnut Street| N| N| N| |POLYGON ((-123.10...|POLYGON ((-123.10...| 17| 139| Mount Pleasant Park|Mount Pleasant| W 16th Avenue| Ontario Street| N| N| N| |POLYGON ((-123.10...|POLYGON ((-123.10...| 18| 138| Major Matthews Park|Mount Pleasant| W 11th Avenue|Manitoba Street| N| N| N| |POLYGON ((-123.10...|POLYGON ((-123.10...| 19| 137|Jonathan Rogers Park|Mount Pleasant| W 7th Avenue|Manitoba Street| N| Y| N| |POLYGON ((-123.09...|POLYGON ((-123.09...| 20| 183| Thornton Park| Strathcona|Terminal Avenue| Main Street| N| N| N| +--------------------+--------------------+------+---------+--------------------+--------------+---------------+---------------+-------+---------+----------+ only showing top 20 rowsroot|-- shape: geometry (nullable = false)|-- geometry: string (nullable = true)|-- ParkId: string (nullable = true)|-- RefParkId: string (nullable = true)|-- ParkName: string (nullable = true)|-- Neighborho: string (nullable = true)|-- EWStreet: string (nullable = true)|-- NSStreet: string (nullable = true)|-- DogPark: string (nullable = true)|-- Washrooms: string (nullable = true)|-- SpecialFea: string (nullable = true)

渲染

方法參考上一小節(jié)。

// 轉(zhuǎn)為像素 sqlText = "select ST_Envelope_Aggr(shape) as boundary from park"; rawDF = spark.sql(sqlText); rawDF.createOrReplaceTempView("bound");sqlText = "select ST_Pixelize(shape, 256, 256, (select boundary from bound)) as pixel, shape from park "; rawDF = spark.sql(sqlText); rawDF.createOrReplaceTempView("pixels"); rawDF.show(false); // 選擇顏色 sqlText = "select pixel, shape, ST_Colorize(1, 1, 'red') as color from pixels"; rawDF = spark.sql(sqlText); rawDF.createOrReplaceTempView("pixels"); rawDF.show(); // 渲染 sqlText = "select ST_Render(pixel, color) as image from pixels"; rawDF = spark.sql(sqlText); rawDF.createOrReplaceTempView("images"); rawDF.show(); // 保存 Dataset<org.apache.spark.sql.Row> images = spark.table("images"); Row[] take = (Row[])images.take(1); ImageSerializableWrapper image = (ImageSerializableWrapper)take[0].get(0); new ImageGenerator().SaveRasterImageAsLocalFile(image.getImage(),System.getProperty("user.home") + "/park", ImageType.PNG);

參考連接:https://www.jianshu.com/p/8100714295bc

總結(jié)

以上是生活随笔為你收集整理的Geospark-SQL加载SHP数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色涩视频在线观看 | 国产青青操 | 国产中文字幕一区二区三区 | 色综合中文网 | 日韩免费高清视频 | 成人性生交免费看 | 中文字幕一区二区在线观看 | 免费福利在线 | 色蜜桃av | 成人久色 | 男女做爰猛烈吃奶啪啪喷水网站 | 成人免费网址 | 午夜天堂av| 国产人妻久久精品一区二区三区 | 五月婷在线观看 | 亚洲+小说+欧美+激情+另类 | 亚洲精品2| 国产成人aⅴ | 超碰免费av | 国产青青| 都市激情 亚洲 | 黄色av不卡| 在线观看日本一区二区 | 99久久久无码国产精品免费麻豆 | 欧美视频精品在线 | 国产二区自拍 | 男女作爱网站 | 99re这里只有 | 久久久久九九九 | 国产一区二区三区网站 | 性欧美丰满熟妇xxxx性久久久 | 色综合av在线 | 日韩影视在线 | 国内少妇毛片视频 | jzzjzz日本丰满少妇 | 带aaa级的网名 | 91极品蜜桃臀 | 手机av免费在线观看 | 男女啪啪免费看 | 肉丝美足丝袜一区二区三区四 | 国产野外作爱视频播放 | 亚洲av无码一区二区乱子伦as | 国产高清自拍视频 | 西方裸体在线观看 | 久操久操 | 熟妇高潮精品一区二区三区 | 青青草原综合网 | 天天操天天操天天操 | 精国产人伦一区二区三区 | 成人男女视频 | 亚洲小说网 | 欧美亚洲日本一区 | 黄色网占 | av中文字幕免费 | 日韩黄色一区 | 外国黄色录像 | 超碰在线人人 | 国产午夜一区二区 | 久伊人网 | www.亚洲天堂.com | 黄色一级片在线看 | 亚洲人妻一区二区三区 | 欧美一级不卡视频 | 国产av一区二区不卡 | 亚洲综合射| 久久夜夜夜 | 国产精品无码人妻一区二区在线 | 国产精品成人在线 | 人人做人人爱人人爽 | 亚洲国产精品99 | 一区二区三区在线免费视频 | 777中文字幕 | 阿v视频免费在线观看 | 影音先锋成人资源 | jizzjizz免费| 九九色精品| 亚洲高清久久 | 欧美色图国产精品 | 国产免费一区二区视频 | 男女视频在线观看免费 | 亚洲欧美va天堂人熟伦 | 国产91小视频 | 波多野结衣在线电影 | 求个黄色网址 | 91福利视频在线观看 | 97超碰免费在线观看 | 国产精品短视频 | 日韩免 | 欧美一区二区三区久久综合 | 在线中文字幕播放 | 91久久久久久| 麻豆最新 | 懂色av蜜臀av粉嫩av喷吹 | 18禁网站免费无遮挡无码中文 | 二区在线视频 | 制服.丝袜.亚洲.中文.综合懂色 | 视频一区在线播放 | 97久久国产亚洲精品超碰热 | 老版水浒传83版免费播放 |