Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÅúÁ¿½«±¾µØgisÊý¾Ýµ¼ÈëpostgisÊý¾Ý¿â
 
×÷Õߣºº«·æ
  1932  次浏览      27
2020-12-4 
 
±à¼­ÍƼö:

±¾ÎÄÖ÷Òª½éÉÜÁËgeojsonio°üµ¼È롢ʹÓÃrgdal°ü¡¢Ê¹ÓÃsf°üµ¼Èë¡¢geojson¡¢topojsonµÈÏà¹ØÄÚÈÝ¡£
±¾ÎÄÀ´×Ô΢ÐŹ«ÖںŠ- Êý¾ÝСħ·½£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼­¡¢ÍƼö¡£

ÒÔǰÔÚ´¦ÀígisÊý¾ÝµÄʱºò£¬¶¼ÊÇÖ±½Óµ¼Èë±¾µØshpËØ²Ä¡¢±¾µØgeojsonËØ²Ä£¬±¾µØtopojsonËØ²Ä£¬×Ô´Ó½Ó´¥postgisÊý¾ÝÖ®ºó£¬Éî¸ÐʹÓù淶µÄ´æ´¢ÏµÍ³À´Í³Ò»¹ÜÀígisÊý¾ÝµÄºÃ´¦£¬ÌرðÊÇÊý¾ÝÁ¿´óÁËÖ®ºó£¬ÓÅÊÆ±ã¸ü¼ÓÃ÷ÏÔ£¬Äã¿ÉÒÔÑ¡Ôñ½«ºÜ¶àÐèÒª×ö¿Õ¼ä¼ÆËãµÄ²½Öè×ªÒÆµ½PostgisÊý¾Ý¿âÄÚ½øÐмÆË㣬Ҫ֪µÀPostgisÌṩµÄ¿Õ¼ä¼ÆËãÄÜÁ¦ÓëRºÍPythonÕâÖÖÓ¦Óõ¼ÏòµÄ¹¤¾ßÏà±È£¬ÓÅÊÆÒª´óµÃ¶à¡£

ÔÚÅúÁ¿µ¼ÈëËØ²Ä֮ǰ£¬ÎÒÃÇ¿ÉÒÔÏÈ¿´ÏÂRÓïÑÔĿǰÌṩµÄ¸÷ÖÖµ¼Èë½Ó¿ÚÔÚI/OÐÔÄÜÉÏÏà±ÈÓкÎÒìͬ¡£

#install.packages("geojsonio")
#devtools:: install_github("ropensci/geojsonio")
library("geojsonio")
library("rgdal")
library("sf")
library("maptools")

ʹÓÃmaptools°üÖеÄreadShapePolyº¯Êý½øÐе¼È루Òѿ챻ÒÅÆúÁË£¬ÍƼöʹÓÃsfºÍrgdal°ü£©

system.time(china_map <- readShapePoly("D:/R/rstudy/CHN_adm/bou2_4p.shp"))
Óû§ ϵͳ Á÷ÊÅ
0.23 0.00 0.23
Warning message:
use rgdal::readOGR or sf::st_read
china_map@data
ggplot2::fortify(china_map)

geojsonio°üµ¼È룺

system.time(geojson1 <- geojson_read(
"D:/R/rstudy/CHN_adm/bou2_4p.shp",
method = "local",
parse = TRUE,
what = "sp",
encoding="utf-8",
use_iconv=TRUE
))
Óû§ ϵͳ Á÷ÊÅ
0.69 0.03 0.71
 

ʹÓÃrgdal°ü£º

system.time(map_data <- readOGR(
"D:/R/rstudy/CHN_adm/bou2_4p.shp",
encoding="utf-8",
use_iconv=TRUE
))
OGR data source with driver: ESRI Shapefile
Source: "D:\R\rstudy\CHN_adm\bou2_4p.shp",
layer: "bou2_4p"with 925 features
It has 7 fields
Integer64 fields read as strings: BOU2_4M_ BOU2_4M_ID
Óû§ ϵͳ Á÷ÊÅ
0.66 0.09 0.75

ʹÓÃsf°üµ¼È룺

system.time(nepal_shp <- read_sf(
"D:/R/rstudy/CHN_adm/bou2_4p.shp",
options = "ENCODING=gbk"
))
Óû§ ϵͳ Á÷ÊÅ
0.05 0.00 0.05

¿ÉÒÔ¿´µ½ÔÚͬһ¸öshpÎļþµ¥Ïîµ¼ÈëµÄÇé¿öÏ£¬´¿´â´Óʱ¼äÉÏÀ´¿´£º

sf > maptools > rgdal > geojsonio

ÕâÀïÖµµÃÒ»ÌáµÄÊÇ£¬geojsonio°üÊÇ·â×°µÄrgdal·þÎñ£¬ÐÔÄÜÉÏ×ÔÈ»ÂÔÑ·rgdalÒ»³ï£¬ÒÔÉÏËĸö°üÖУ¬³ýsf°üÊÇ»ùÓÚsimple features±ê×¼µÄÄ£ÐÍÖ®Í⣬ÆäËû»ù±¾¶¼ÊÇ»ùÓÚspÄ£Ð͵ġ£sfÄ£Ð͵ÄÐÔÄÜÓɴ˿ɼûÒ»°ß¡£

µ±È»£¬ÒÔÉÏsf°ü¡¢rgdal°üºÍsf°ü¶¼ÊǼæÈÝÐԺܺõذü£¬¿ÉÒÔÖ§³Ö·Ç³£¹ã·ºµÄÊý¾ÝÔ´£¬ÒÔÏ·ֱðÊÇÔÚjson±ê׼ϵÄÁ½ÖÖËØ²ÄÉϽøÐвâÊÔ¡£

geojson

system.time(geojson <- geojson_read(
"D:/R/mapdata/State/china.geojson",
method = "local",
parse = TRUE,
encoding="utf-8",
use_iconv=TRUE,
what = "sp"
))
Óû§ ϵͳ Á÷ÊÅ
0.80 0.02 0.81

system.time(map_data <- readOGR(
"D:/R/mapdata/State/china.geojson",
encoding="utf-8",
use_iconv=TRUE,
stringsAsFactors = FALSE
))
OGR data source with driver: GeoJSON
Source: "D:\R\mapdata\State\china.geojson", layer: "china"with 34 features
It has 2 fields
Óû§ ϵͳ Á÷ÊÅ
0.77 0.00 0.76
system.time(nepal_shp <- read_sf(
"D:/R/mapdata/State/china.geojson"
))
Óû§ ϵͳ Á÷ÊÅ
0.03 0.00 0.03

topojson

system.time(map_data <- readOGR(
"D:/R/mapdata/china.topojson",
use_iconv=TRUE,
encoding = "utf-8",
stringsAsFactors = FALSE
))
OGR data source with driver: GeoJSON
Source: "D:\R\mapdata\china.topojson", layer: " china"with 34 features
It has 2 fields
Óû§ ϵͳ Á÷ÊÅ
0.52 0.01 0.59
system.time(geojson <- topojson_read(
"D:/R/mapdata/china.topojson",
encoding="utf-8",
use_iconv=TRUE
))
OGR data source with driver: GeoJSON
Source: "D:\R\mapdata\china.topojson", layer: "china"with 34 features
It has 2 fields
Óû§ ϵͳ Á÷ÊÅ
0.59 0.00 0.59
system.time(nepal_shp <- read_sf(
"D:/R/mapdata/china.topojson"
))
Óû§ ϵͳ Á÷ÊÅ
0.02 0.00 0.01

ÊDz»ÊÇ¿´ÍêÕâ¸öÐÔÄÜ´ó±ÈÆ´Ö®ºó´ó³ÔÒ»¾ª£¬Îªsf°üµÄ³¬Ç¿IOÄÜÁ¦ËùÕÛ·þ£¬sf°üÊÇÒ»¸ö·Ç³£Ç¿´óµÄ°ü£¬ÊµÏÖÁË»ùÓÚsimple featuresµÄËùÓÐÌØÐÔ£¬Èç¹ûÄãÁ˽âÒ»µã¶ùPostgisµÄ»°£¬Äã»á·¢ÏÖ×÷Õ߰Ѵ󲿷ֿռäÔËËãµÄº¯ÊýÃû³ÆÉè¼ÆµÄºÍPostgisÖеĺ¯ÊýһģһÑù£¬Õâ¾ÍÒâζ×ÅÄãÎÞÂÛÊÇÖ»Á˽â¹ýsf°üº¯Êý£¬»òÕßÖ»Á˽â¹ýPostgisº¯Êý£¬¶¼¿ÉÒԵͳɱ¾µÄÇ¨ÒÆµ½Á½Ò»¸öƽ̨£¬ÒòΪͬÃûº¯ÊýÍùÍù¹¦ÄÜÒ»Ö¡£

Èç¹ûÄãÒªÏ뽫sf°üµ¼ÈëµÄÊý¾ÝÄ£ÐÍת»»ÎªÆÕͨµÄÊý¾Ý¿òģʽ£¬½ö½öÖ»ÐèʹÓÃÆäÌṩµÄas(sf,¡¯Spatial¡¯)º¯ÊýÒ»´Îת»¯¼´¿É£¬µ±È»sfÓÐ×Ô¼ºµÄggplot2ͨµÀº¯Êýgeom_sf()£¬ÕâÒâζ×ÅÄã²»±Ø¶à´ËÒ»¾Ù¡££¨µ±È»¶ÔÓÚsf²»ÉõÊìϤ£¬Ï°¹ßÓÚʹÓÃgeom_polygonÀ´ÊµÏÖµØÀíÐÅÏ¢¿ÉÊÓ»¯µÄС»ï°é¶ù£¬¿ÉÒÔ²ÉÈ¡ÕâÖÖ°ì·¨£¬µ«ÊÇÈÔÈ»ÒªÍÆ¼ö´ó¼Òѧϰsf°ü£¬ÒòΪËü´ú±í×ÅδÀ´£©¡£

RÓïÑÔ-gisÊý¾ÝÅúÁ¿Èë¿â£º

#¶¨Òå¶Áдº¯Êý£º
task <- function(filename,conn){
#´Ë´¦ÎªÐ´Èë±¾µØgisÊý¾Ý£¨¿ÉÒÔÊÇÈÎÒâ¸ñʽ£¬¿ÉÒÔʹÓÃÈÎÒâÒ»ÖÖµ¼È빤¾ß£©
map_data <- readOGR(filename, use_iconv=TRUE,encoding = "utf-8",stringsAsFactors = FALSE)
file_name <- sub('.json','',basename(filename))
#´Ë´¦ÊÇдÈëÊý¾Ý¿âµÄº¯Êý£¬¿ÉÒÔʹÓÃsf°ü¡¢rgdal°üÒÔ¼°RPostgreSQL°üÌṩµÄд³öº¯Êý¡£
writeOGR(obj = map_data ,dsn = conn,driver = "PostgreSQL",layer=file_name, encoding="gbk",overwrite_layer = TRUE)
}
#´Ë´¦Ê¹ÓÃl_plyº¯Êý´´½¨ÅúÁ¿Ö´ÐÐÈÎÎñ
Project_io <- function(path){
setwd(path)
input_list = list.files(path)
conn <- "PG:dbname='mytest' host='localhost' port='5432' user='postgres' password='708965'"
l_ply(input_list,task,conn)
}
#Æô¶¯ÈÎÎñ
Project_io("D:/R/mapdata/Province")

Python-gisÊý¾ÝÅúÁ¿Èë¿â£º

import geopandas as gpd
import pandas as pd
from sqlalchemy import create_engine
from geoalchemy2 import Geometry,WKTElement
import numpy as np
import os
import re
import json
#Êý¾ÝдÈ뺯Êý£º
def write_gis(path):
map_data = gpd.GeoDataFrame.from_file(path)
map_data['geometry'] = map_data['geometry'].apply(lambda x: WKTElement(x.wkt,4326))
map_data.drop(['center','parent'], axis = 1, inplace=True)
map_data.to_sql(
name = re.split('\\.',path)[0],
con = engine,
if_exists= 'replace',
dtype = {'geometry': Geometry(geometry_type ='POLYGON', srid = 4326)}
)
return None
#´´½¨ÅúÁ¿ÈÎÎñ
def to_do(file_path,username,password,dbname):
os.chdir(file_path)
link = "postgresql://{0}: {1}@localhost:5432/{2}".format(username, password,dbname)
engine = create_engine(link,encoding = 'utf-8')
file_list = os.listdir()
map(lambda x: write_gis(x),file_list)
return None
#Ö´ÐÐÈÎÎñ¼Æ»®
if __name__ == '__main__':
file_path = 'D:/R/mapdata/Province'
username = 'postgres'
password = *****
dbname = 'mytest'
to_do(file_path,username,password,dbname)
print('DODE')

 

   
1932 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ