日韩性视频-久久久蜜桃-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)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲 欧美 日韩在线 | a男人天堂 | 91在线观看欧美日韩 | 国产叼嘿视频在线观看 | 日韩在线播放视频 | 致命魔术电影高清在线观看 | 爱视频福利网 | 亚洲无吗一区二区三区 | 一级特黄妇女高潮2 | 曰批女人视频在线观看 | 99精品在线免费视频 | 亚洲男人的天堂在线观看 | 亚洲人成人一区二区在线观看 | 亚洲 欧洲 日韩 | 免费看污黄网站在线观看 | 成人一级网站 | 成人国产精品免费观看 | 亚瑟av在线 | 免费人成自慰网站 | 日韩av免费| 国产精品久久久久久久一区探花 | 国产又粗又猛又黄视频 | 久久久一二三四 | 日韩免费一区 | 亚洲乱码国产乱码精品精剪 | 91精品国产综合久久精品图片 | 黄色成人免费网站 | 丝袜老师扒开让我了一夜漫画 | 亚洲精品无码久久久久 | 狠狠干精品 | 国模精品一区 | 国内精品一区二区三区 | 国产嫩bbwbbw高潮 | 小毛片网站 | julia一区二区三区在线观看 | 久久久久看片 | 婷婷综合在线观看 | 俺去草 | 一区二区三区免费看 | 精品一二三四区 | 亚洲高清资源 | 日韩精品av一区二区三区 | 人人妻人人爽欧美成人一区 | 狠狠久久久 | 亚洲av无码片一区二区三区 | 无码人妻aⅴ一区二区三区玉蒲团 | 天堂а√在线中文在线鲁大师 | 男人天堂手机在线 | 蜜臀久久99精品久久久久久 | 黄色片网站在线 | 丁香九月婷婷 | 欧洲影院 | www.欧美激情 | 日韩精品无码一本二本三本色 | 日韩午夜一区 | 成年人看的羞羞网站 | www.四虎精品 | 免费观看一区二区 | 黄色特级大片 | 国产日本欧美在线 | 国产在线观看中文字幕 | 中文字幕一区二区久久人妻网站 | 一级片播放 | 超碰伊人网 | 久草免费在线观看视频 | 99视频国产精品 | 天天想你在线观看完整版电影高清 | 亚洲中文字幕一区二区 | 欧洲免费av| av导航网| 成人免费短视频 | 一级α片免费看刺激高潮视频 | 久久超碰av| 五月激情丁香网 | 777四色| 夜夜嗨av禁果av粉嫩av懂色av | 成人在线播放网站 | 国产精品一线二线 | www.国产精品视频 | 成人免费高清在线播放 | v99av| 亚洲高清在线观看 | 国产亚洲欧美日韩高清 | 毛片aa| 亚洲永久精品在线观看 | 日本在线一 | www.激情五月 | 亚洲AV无码成人国产精品色 | 日韩精品无码一区二区三区久久久 | 国产免费黄色小视频 | 亚洲另类春色 | 久久久精品网站 | 日韩专区一区二区三区 | 中文字幕激情小说 | 欧美人与性动交ccoo | 黄在线免费看 | 亚洲六月丁香色婷婷综合久久 | 五十路六十路 | 亚洲视频精品在线观看 |