您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 3空间数据库实验指导书_PostGIS的空间数据库操作
PostGIS的空间数据库操作1、SHP导入POSTGIS数据库导出sql再导入数据库方法1:以SQL文件为中间媒介实现shp导入空间数据库Step1:shp2pgsql-s4326F:\spatial\data\cities.shpcitiesD:\cities.sql说明:-s设置坐标系统;F:\spatial\data\cities.shp指定数据源;cities目标表名称。Step2:运行postgres数据库;输入登录密码:admin进入数据库;选中postgis数据库Step3:点击工具栏上的,弹出sql窗口Step4:点击,找到刚才生成的SQL文件,打开,运行即可。方法2:通过命令行直接导入空间库Step1:shp2pgsql-s4326F:\spatial\data\cities.shppublic.citiespsql-Upostgres-padmin-dpostgis说明:-s设置坐标系统;F:\spatial\data\cities.shp指定数据源;public.cities目标表名称;–U用户名;–p密码;–d空间数据库名称。方法3:通过界面导入空间库Step1:在开始菜单中,运行postgis2.0下面的Step2:点击,设置数据库连接;确定,如果成功,在前一界面上会出现“Connectionsucceeded.”的信息。Step3:点击,在对话框找到需要转入空间数据库的shp文件,openStep4:点击即可导入数据Step5:如果数据中的字段存在汉字的话,可以点击进行编码设置。2、SHP导入POSTGIS数据库方法1:通过命令行直接导出shppgsql2shp-fd:\shop_point.shp-hlocalhost-upostgres-Padminpostgispublic.cities说明:-fd:\shop_point.shp导出文件的名称和路径;-h数据库的ip地址;–U用户名;–p密码;postgis空间数据库名称;public.cities空间数据库表的名称方法2:通过命令行直接导出shpStep1:在开始菜单中,运行postgis2.0下面的Step2:点击,设置数据库连接;确定,如果成功,在前一界面上会出现“Connectionsucceeded.”的信息。Step3:选择export界面Step3:点击;再点击即可3、PostGIS函数分类字段处理函数AddGeometryColumn为已有的数据表增加一个地理几何数据字段;DropGeometryColumn删除一个地理数据字段的;SetSRID设置SRID值几何关系函数这类函数目前共有10个,分别是:Distance,Equals,Disjoint,Intersects,TouchesCrosses,Within,Overlaps,Contains,Relate几何分析函数这类函数目前共有12个,分别是:Centroid,Area,Lenth,PointOnSurface,Boundary,Buffer,ConvexHull,Intersection,SymDifference,Difference,GeomUnion,MemGeomUnion读写函数这类函数很多,主要是用于在各种数据类型之间的转换,尤其是在于Geometry数据类型与其他如字符型等数据类型之间的转换,函数名如AsText、GeomFromText等。4、Geo-SQL查询Selectc1.city_nameFromCitiesC1,RiversRWhereST_Overlaps(C1.geom,ST_Buffer(R.geom,3000))Selectc1.city_nameFromCitiesC1,(Selectgeomfromriverswherename='Alabama')asmWhereST_Overlaps(C1.geom,ST_Buffer(m,3000))Selectc1.city_nameFromCitiesC1,(SelectST_Buffer(geom,3000)asddfromriverswherename='Platte')asmWhereST_Overlaps(C1.geom,m.dd)=trueSelectc1.city_name,ST_Overlaps(C1.geom,m.dd)FromCitiesC1,(SelectST_Buffer(geom,3000)asddfromriverswherename='Platte')asm做一个点查询(查询州数据)ST_Within点查询城市ST_Buffer、ST_Within查询某一州包含的城市ST_Contains查询面价大于XX的州有哪些ST_Area查询州的名字(按照面积从大到小排序)ST_Area条件查询空间数据,查询结果的空间数据,用文本显示ST_AsText与某点距离小于XX的要素有哪些(点线面分别查询一次)ST_Distance、ST_MakePoint查询名字为XX的河流,流经哪些州ST_Crosses将某个城市平移一定的距离ST_GeomFromText、ST_AsText附件:常用的Geo-SQL查询1.SELECTshengjie_region.name,shijie_region.nameFROMshengjie_region,shijie_regionwhereshijie_region.provincena=shengjie_region.nameandST_Within(ST_MakePoint(121.54,38.91),shengjie_region.geom)点查询某省份,并找到该省份的城市2.SELECTnameFROMshijie_regionwhereST_Within(ST_MakePoint(121.54,38.91),geom)3.SELECTshengjie_region.name,shijie_region.nameFROMshengjie_region,shijie_regionwhereST_Within(ST_MakePoint(121.54,38.91),shijie_region.geom)andST_Within(ST_MakePoint(121.54,38.91),shengjie_region.geom)4.SELECTshengjie_region.name,shijie_region.name,xianjie_region.nameFROMshengjie_region,shijie_region,xian_point,xianjie_regionwhereST_Within(ST_MakePoint(121.54,38.91),shengjie_region.geom)andST_Within(ST_MakePoint(121.54,38.91),shijie_region.geom)andST_Within(ST_MakePoint(121.54,38.91),xianjie_region.geom)5.SELECTnameFROMguodao_polylinewhereST_Within(ST_MakePoint(121.54,38.91),geom)6.selectname,st_distance(ST_MAKEPOINT(116.561,40.276),geom)asdistancefromshengjie_regionwherename='天津市'orname='辽宁省'orname='北京市'7.selectst_point(63.573566,44.646244)fromdual;8.SELECTST_AsText(geom)aswktFROMshengjie_regionwherename='新疆维吾尔自治区'9.SELECTST_AsEWKT(geom)asbufferFROMshengjie_region10.SELECTST_AsText(st_transform(st_setsrid(ST_Buffer(st_transform(st_setsrid(st_geomfromtext('+wkt+'),4326),2333),10800),2333),4326))FROMdual11.SELECTST_MakePoint(121.55223,38.86758)fromdual;12.SELECTst_distance(ST_MakePoint(121.55223,38.86758),geom)fromgongyuan_point;13.SELECTnameFROMgongyuan_pointwhereST_Within(ST_MakePoint(121.54,38.91),geom)14.SELECTST_SetSRID(ST_MakePoint(121.55223,38.86758),4326);15.SELECTname,st_distance(ST_MakePoint(121.55223,38.86758),geom)fromgongyuan_pointwherest_distance(ST_MakePoint(121.55223,38.86758),geom)0.02;16.SELECTgid,name,st_setsrid(ST_MakePoint(121.55223,38.86758),4326)fromgongyuan_pointwherest_distance(ST_MakePoint(121.55223,38.86758),geom)0.02;17.SELECTST_Distance(ST_Transform(ST_GeomFromText('POINT(121.5522338.86758)',4326),26986),ST_Transform(ST_GeomFromText('POINT(121.5622438.87757)',4326),26986));18.selectgid,POINT(geom)fromgongyuan_pointwherest_distance(ST_MakePoint(121.55223,38.86758),geom)0.02;19.SELECTST_Distance(ST_Transform(ST_GeomFromText('POINT(121.5522338.86758)',4326),26986),ST_Transform(ST_GeomFromText('POINT(121.5617140838.87784198)',4326),26986));20.SELECTST_DWithin(ST_Transform(ST_GeomFromText('POINT(121.5522338.86758)',4326),26986),ST_Transform(ST_GeomFromText('POINT(121.5617140838.87784198)',4326),26986),1500)fromdual;21.SELECTST_DWithin(ST_Transform(ST_GeomFromText('POINT(121.5522338.86758)',4326),26986),ST_Transform(ST_GeomFromText('POINT(121.5617140838.87784198)',4326),26986),1400)fromdual;22.SELECTname,st_distance(ST_MakePoint(121.55223,38.86758),geom)fromgongyuan_pointwherest_distance(ST_MakePoint(121.55223,38.86758),geom)0.02orderbyst_distance(ST_MakePoint(121.55223,
本文标题:3空间数据库实验指导书_PostGIS的空间数据库操作
链接地址:https://www.777doc.com/doc-2929314 .html