คำถามติดแท็ก postgis

PostGIS เป็นส่วนเสริมสำหรับฐานข้อมูลเชิงสัมพันธ์เชิงวัตถุของ PostgreSQL ที่เพิ่มการรองรับวัตถุทางภูมิศาสตร์

4
ฉันไม่พบ shp2pgsql ในการติดตั้ง postgis
ฉันติดตั้ง postgis ตามคู่มือนี้แล้ว ทั้งหมดก็โอเค SELECT postgis_full_version(); "POSTGIS="2.1.7 r13414" GEOS="3.4.2-CAPI-1.8.2 r3921" PROJ="Rel. 4.8.0, 6 March 2012" GDAL="GDAL 1.10.1, released 2013/08/26" LIBXML="2.9.1" LIBJSON="UNKNOWN" TOPOLOGY RASTER" แต่ฉันไม่มี shp2pgsql ใน/usr/lib/postgresql/9.4/binตามที่คุณเห็น: foo@bar:/usr/lib/postgresql/9.4/bin$ ls clusterdb initdb pg_dump pg_standby psql createdb oid2name pg_dumpall pg_test_fsync reindexdb createlang pg_archivecleanup pg_isready pg_test_timing vacuumdb createuser pg_basebackup pg_receivexlog pg_upgrade vacuumlo dropdb pgbench …

2
Multipoint เทียบกับ PostGIS
เป็นเรื่องปกติหรือไม่ที่จะใช้รูปทรงเรขาคณิต 'หลายจุด' แทน 'จุด' รู้ว่าฉันใช้มันเพื่อเก็บจุดเดียวหรือไม่? ฉันจะแปลงจากหลายจุดเป็นจุดได้อย่างไร

2
ทำไม vaules วันที่แสดง 'Z' ต่อท้ายเมื่อเลเยอร์ถูกเผยแพร่ด้วย Geoserver และที่เก็บข้อมูล PostGIS
ฉันได้เผยแพร่เลเยอร์ต่างๆโดยใช้ Geoserver 2.2.x พร้อมที่เก็บข้อมูล PostGIS 2.0.1 (PostgreSQL 9.1.x) ฟิลด์ที่มีค่าวันที่เท่านั้นและไม่ใช่ค่าที่เกี่ยวข้องกับเวลา / การประทับเวลาจะถูกเก็บไว้เป็นวันที่ หลังจากเผยแพร่เลเยอร์ของฉันเป็น wfs / wms และเปิดตารางในวันที่เบราว์เซอร์ vlues แสดงขึ้นพร้อมกับ 'Z' ต่อท้าย นี่เป็นผลิตภัณฑ์ของ api data store ของ geotools ที่ geoserver ใช้อยู่หรือไม่? ฉันคิดว่า api data store ของ geotools กำลังโยนผ้าห่มเหนือวันที่อ่านข้อมูลในรูปแบบ datetime, timestamp เป็นต้นและ 'z' จะปรากฏขึ้นตามเวลาของ zulu ฉันสามารถปิดโดยสิ้นเชิงกับสมมติฐานทางภูมิศาสตร์ของฉัน แต่ใน PostgreSQL 'z' หมายถึงซูลูหรือ utc หากค่าแหล่งข้อมูลถูกเก็บไว้เป็นวันที่และไม่มีส่วนประกอบเวลาทำไมจึงมี 'Z' …

2
การแปลงจากเรขาคณิต 3 มิติเป็น 2 มิติ
ฉันมีตารางจุดที่คอลัมน์รูปทรงเรขาคณิตมีค่าทั้ง 3 มิติและ 2 มิติฉันต้องการแปลงรูปทรงเรขาคณิต 3 มิตินี้เป็น 2 มิติมีฟังก์ชั่นใดบ้างใน PostGIS โปรดช่วยฉันแก้ปัญหานี้ด้วย ขอแสดงความนับถือ Sreesha.TA

3
ตัวเลือกสำหรับการแสดง PostGIS rasters ใน OpenLayers
คำถามนี้คล้ายกับคำถามก่อนหน้านี้เกี่ยวกับการแสดงข้อมูลเวกเตอร์ในแผนที่เว็บ ฉันต้องการมีเว็บอินเตอร์เฟสพื้นฐานที่ใช้ OpenLayers และสามารถแสดงข้อมูลแรสเตอร์ที่อยู่ใน PostGIS ในปัจจุบันโดยใช้แผนที่ฐานเช่น google ฉันได้ติดตั้ง PostGIS2.0 พร้อมห้องสมุดแรสเตอร์และดูจากเอกสารประกอบว่ามีหลายตัวเลือกในการส่งออกข้อมูลเช่น JPEG, GeoTIFF และ PNG เป็นรูปแบบการแนะนำให้ใช้หรือไม่ ในการแสดงข้อมูลเวกเตอร์ฉันกำลังใช้จาวาสคริปต์เพื่อส่งพิกัดจากเบราว์เซอร์ของผู้ใช้ไปยังเซิร์ฟเวอร์ของฉันจากนั้นดำเนินการสืบค้นโดยใช้ PHP / SQL บน PostGIS ผลลัพธ์จะถูกส่งคืนเป็น GeoJSON ซึ่งสามารถซ้อนทับบนแผนที่ ฉันสงสัยว่าวิธีการที่คล้ายกันสามารถนำไปใช้กับ rasters ได้หรือไม่ แต่ฉันไม่รู้ว่ารูปแบบ raster ใดที่ดีที่สุดหรือมีข้อ จำกัด อื่น ๆ ที่ฉันควรพิจารณา ฉันเห็นการอ้างอิง GeoServer จำนวนมาก แต่ฉันไม่แน่ใจว่าจำเป็นสำหรับโครงการนี้หรือไม่ (ฉันไม่แน่ใจว่าควรใช้ GeoServer ทั้งหมดหรือไม่)

2
กำลังทำความสะอาดรูปทรงเรขาคณิตใน PostGIS หรือไม่
ฉันพยายามทำการประมวลผลบางอย่างบนเลเยอร์รูปหลายเหลี่ยมที่มีขนาดใหญ่มาก อย่างไรก็ตามฉันพบข้อผิดพลาดทางเรขาคณิตหลายอย่างเช่น: NOTICE: Ring Self-intersection at or near point 470396.52017068537 141300.52235257279 CONTEXT: PL/pgSQL function st_intersection(geometry,raster,integer) line 10 at RETURN QUERY SQL function "st_intersection" statement 1 NOTICE: Ring Self-intersection at or near point 504154.61769969884 140782.04115761846 CONTEXT: PL/pgSQL function st_intersection(geometry,raster,integer) line 10 at RETURN QUERY SQL function "st_intersection" statement 1 NOTICE: Ring …

2
จุดใดที่ไม่สามารถอยู่ภายในหรือแตะ แต่ยังตัดรูปหลายเหลี่ยมได้
ฉันกำลังทำงานกับการสำรวจสำมะโนประชากรของรูปร่าง (multipolygons) และฉันมีตารางที่มีจุดอื่น เราบันทึกการสำรวจสำมะโนประชากรบล็อกที่แต่ละจุดมีฉันมีหนึ่งจุดที่ส่งกลับเท็จสำหรับทุก ST_Within และ ST_Touches แบบสอบถาม อย่างไรก็ตามมันจะคืนค่าจริงสำหรับ ST_Intersects ในหนึ่งบล็อก หากเป็นรูปหลายเหลี่ยมอีกอันฉันสามารถเข้าใจได้ว่าสิ่งนี้จะเกิดขึ้นได้อย่างไร แต่จะมีจุดเดียว (ฉันตรวจสอบแล้วว่าเป็นกรณีนี้) จริงหรือไม่สำหรับ Intersects แต่เป็นเท็จสำหรับทั้งภายในและ Touches ตรวจสอบใน QGis ดูเหมือนว่ามันควรจะกลับมาจริงสำหรับ Touches ตารางของเรามีคะแนนนับล้านและมีเพียงจุดเดียวที่ดูเหมือนว่ามีปัญหาใด ๆ ฉันเรียกใช้ ST_IsValid ทั้งรูปหลายเหลี่ยมและตรงประเด็น ฉันค่อนข้างใหม่กับข้อมูลรูปทรงเรขาคณิต ฉันพลาดอะไรบางอย่างเกี่ยวกับวิธีการทำงานนี้หรือไม่? และบล็อกรูปหลายเหลี่ยม (geoid: '170898507021157') SELECT ST_Within(pt, geom), ST_Touches(pt, geom), ST_Intersects(pt, geom) FROM ( VALUES ( ST_SetSRID( ST_GeometryFromText($$MULTIPOLYGON(((-88.466933 42.139013,-88.464586 42.139034,-88.463821 42.13901,-88.463811 42.138813,-88.463815 42.138705,-88.46382 …
11 postgis 

1
โทร ST_Transform ในรูปทรงเรขาคณิตที่มีอยู่แล้วใน srid เป้าหมายหรือไม่
ฉันกำลังเขียนฟังก์ชันที่มีรูปทรงเรขาคณิตเป็นพารามิเตอร์ที่สามารถใช้ในการฉายภาพที่แตกต่างกัน: CREATE OR REPLACE FUNCTION foo(in geometry) RETURNS boolean AS $$ DECLARE transformed_geom geometry := in; BEGIN IF ST_SRID(transformed_geom) != 32737 THEN transformed_geom := ST_Transform(transformed_geom, 32737); END IF; [ ... ] END; $$ language plpgsql; ฟังก์ชันต้องการเรขาคณิตในการฉายภาพเฉพาะ (32737) แต่ฉันไม่ต้องการบังคับให้ผู้เรียกทำการเปลี่ยนแปลงฉันชอบที่จะจัดการกับมันภายในฟังก์ชั่น คำถามคือแทนที่จะตรวจสอบ srid จริงปลอดภัยหรือไม่ที่จะโทรไปที่ST_Transformเสมอ? จะทำอะไรถ้าเรขาคณิตนั้นมีอยู่ในการฉายเป้าหมายหรือไม่? ฉันตรวจสอบด้วยแบบสอบถามเช่นนี้ดูเหมือนว่าจะปลอดภัย แต่จะดีถ้ามีใครสามารถยืนยันได้เพราะฉันไม่เห็นในเอกสาร SELECT ST_AsEWKT(geom), ST_AsEWKT(ST_Transform(geom, 32737)) FROM table_in_32737;
11 postgis  srid 

1
เลือกจุดทั้งหมดภายในกรอบ
ฉันเคยเห็นคำถามนี้ถามมาก่อน แต่คำตอบที่ฉันพยายามไม่ทำงาน ฉันกำลังค้นหาวิธี OSM ทั้งหมดที่อยู่ในกล่องขอบเขต ข้อมูล OSM ถูกนำเข้าด้วย Mercator ทรงกลมเริ่มต้น ฉันกำลังสอบถามโดยใช้ LAT / LON ดังนั้นการแปลง SELECT * FROM planet_osm_ways WHERE ST_Transform( ST_MakeEnvelope(37.808264, 37.804339, -122.275244, -122.271189, 4326),3857 ); เมื่อฉันเรียกใช้สิ่งนี้ฉันได้รับข้อผิดพลาดต่อไปนี้: ข้อผิดพลาด: อาร์กิวเมนต์ของ WHERE ต้องเป็นชนิดบูลีนไม่พิมพ์เรขาคณิตบรรทัดที่ 3: WHERE ST_Transform (ST_MakeEnvelope (37.808264, 37.804339, -12 ...

1
วิธีเพิ่มความเร็วในการทำงานพร้อมกันกับชั้น PostGIS ใน QGIS?
เรากำลังทำงานบนเลเยอร์ใหญ่ในเวลาเดียวกัน (10-20 คน) เราบางคนใช้ QGIS 2.8.1 และ 2.6 อื่น ๆ ผู้ใช้ที่มี 2.8 มีข้อผิดพลาดจำนวนมาก (QGIS) ผู้ใช้ 2.6 คนไม่มีข้อขัดข้องนี้ แต่การเพิ่มคุณสมบัตินั้นช้าอย่างไม่น่าเชื่อ เซิร์ฟเวอร์ Postgres 9.4 ทำงานบนเครื่องเสมือน (Hyper V) ด้วย Win7 อาจเป็นเครือข่ายไม่ใช่ QGIS ใช่ไหม บางทีใครบางคนอาจมีความคิด จะดี :)

2
จุด GPS ที่จับคู่แผนที่ไปยังเครือข่ายถนน!
ฉันค่อนข้างใหม่สำหรับ Postgres และ PostGIS ฉันกำลังพยายามทำการจับคู่แผนที่อย่างง่าย ๆ (หรือการอนุมานเส้นทางถ้าคุณต้องการ) ของบางจุด GPS ฉันใช้postgres (PostGIS) ฉันมีตารางในฐานข้อมูลที่มีคะแนน GPS ของฉัน: gpspoints (Lat, Long, time, speed, azimuth, geometry, ... ) ฉันได้นำเข้าไฟล์รูปร่างของเครือข่ายถนนลงในฐานข้อมูลของฉันด้วย: เส้นทาง (gid, idrte, รุ่น, nomrte, norte, clsrte, geom, ... ) - ฉันไม่มี azimuth ของลิงก์และฉันเป็น ไม่แน่ใจว่าฉันจะคำนวณได้อย่างไรโดยใช้ฟังก์ชั่น postgis ST_azimuth ทั้งหมดที่ฉันมีคือ shapefile ของเครือข่ายถนนที่มีคอลัมน์ที่ระบุข้างต้น ฉันต้องการเชื่อมโยงจุด GPS แต่ละจุดกับลิงก์ที่ใกล้ที่สุด (ในบัฟเฟอร์ประมาณ 20 เมตรรอบจุด) …

1
รุ่นที่โหลดรูปร่างหลายไฟล์เพื่อ Postgis
ตามที่shp2pgsqlช่วยเหลือตัวเลือกวาง , ผนวก , สร้างและเตรียมความพร้อมเป็นพิเศษร่วมกัน ดังนั้นถ้าฉันต้องการสร้างตารางจากรูปร่างและต่อท้ายผนวกรูปร่างหลาย ๆ ไฟล์ฉันจะทำสิ่งต่อไปนี้โดยรักษาตัวนับเพื่อระบุว่าเราอยู่ในโหมดสร้างหรือผนวก cnt=0 for shp in $(ls *.shp); do if [ $cnt -eq 0 ] ; then shp2pgsql -s 27700 -c $shp schema.table_name | psql -h localhost db else shp2pgsql -s 27700 -a $shp schema.table_name | psql -h localhost db fi ((cnt++)) done ใช้งานได้ตามที่คาดไว้ …

2
การอ่านรูปทรงเรขาคณิตของ postgis ด้วยหุ่นดี
ฉันกำลังทำเวิร์กโฟลว์ขนาดเล็กในโน้ตบุ๊ก ipython ที่มี geopandas และ shapely ดึงข้อมูล geospatial จำนวนมากบางครั้งมาจาก shapefiles บางครั้งมาจาก postgis (ซึ่งมีการประมวลผลที่แพงกว่า) ตอนนี้ฉันก็ดึงตาราง postgis ไปเป็น python โดยใช้การsqlalchemyแปลงเรขาคณิตเป็น WKT ไปพร้อมกัน sql = """ SELECT ST_AsText(ST_Transform(the_geom,4326)) as newgeom,* FROM public.parcels2010_small limit 5; """ parcels = pd.read_sql(sql, engine) parcels +----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+ | id | newgeom | the_geom | parcel_id | osm_node_id | +----+---------------------------------------------------+---------------------------------------------------+-----------+-------------+ …

1
จุดสุ่มตัวอย่างตามแนวชายฝั่งที่มีการพันเสาด้วย PostGIS
ฉันกำลังทำงานที่ต้องให้ฉันได้รับคะแนนตัวอย่างทุก ๆ 1,000 กม. ตามแนวชายฝั่งและพบปัญหากับแอนตาร์กติกา จากสิ่งที่ฉันสามารถบอกได้ดูเหมือนว่าจะมีปัญหากับการใช้รูปทรงเรขาคณิตในฟังก์ชั่นเมื่อฉันคิดว่าควรจะใช้ภูมิศาสตร์สำหรับการดำเนินการนี้ การใช้ฟังก์ชั่นจากคำถามที่คล้ายกันอย่างนี้ผมก็สามารถที่จะผลิตผลที่มีลักษณะเช่นนี้ อย่างที่คุณเห็นST_AddMeasure()และST_LocateAlong()ไม่ดูเหมือนว่าจะรักษารูปทรงกลมซึ่งส่งผลให้มีหลายจุดที่อยู่บนขั้วโลกใต้ มีการเพิ่มจุดบนคลิปตามบรรทัดวันที่ (ด้านซ้าย) ตามเอกสารของทั้งสองฟังก์ชั่นสามารถใช้รูปทรงเรขาคณิตเท่านั้น รหัสที่ใช้ในการสร้างรูปหลายเหลี่ยมและจุดสามารถพบได้ที่นี่แต่นี่คือ SQL ที่ใช้ในการสร้างคะแนน: CREATE TABLE atest AS WITH line AS (SELECT id, ST_ExteriorRing((ST_Dump(geom)).geom) AS geom FROM line_sample_test), linemeasure AS (SELECT ST_AddMeasure(line.geom, 0, (ST_Length(line.geom))::int) AS linem, generate_series(0, (ST_Length(line.geom))::int, 10) AS i FROM line), geometries AS ( SELECT i, ST_LocateAlong(linem, i) …

1
การอัพเดตดัชนี GeoServer ImageMosaic PostGIS
ฉันใช้ GeoServer ที่ฉันสร้างที่เก็บข้อมูล ImageMosaic ตามคู่มือนี้ เมื่อฉันสร้างที่เก็บข้อมูลใหม่*.tifไฟล์ทั้งหมดจะได้รับการจัดทำดัชนีในฐานข้อมูล (PostgreSQL พร้อม PostGIS) ฉันจะสร้างรายการดัชนีใหม่ในฐานข้อมูลได้อย่างไรเมื่อฉันใส่ geotiff ใหม่ลงในโฟลเดอร์ข้อมูลของฉันหรือสร้างดัชนีไฟล์พิกัดทั้งหมดในฐานข้อมูลอีกครั้ง ไฟล์ปรับแต่งของฉัน: datastore.properties: SPI=org.geotools.data.postgis.PostgisNGDataStoreFactory host=localhost port=5432 database=GeoServerRaster schema=public user=geoserver passwd=******* Loose\ bbox=true Estimated\ extends=false validate\ connections=true Connection\ timeout=10 preparedStatements=true indexer.properties: Caching=false TimeAttribute=ingestion ElevationAttribute=elevation Schema=*the_geom:Polygon,location:String,ingestion:java.util.Date,elevation:Integer PropertyCollectors=TimestampFileNameExtractorSPI[timeregex](ingestion),DoubleFileNameExtractorSPI[elevationregex](elevation) timeregex.properties: regex=[0-9]{8}T[0-9]{6}Z(\?!.\*[0-9]{8}T[0-9]{6}Z.\*) elevationregex.properties: regex=(?<=_)(\\d{1,5})(?=_) ไฟล์ในไดเรกทอรี: tc_10000_20140807T033115Z.tif tc_10000_20140807T040046Z.tif tc_10000_20140807T043115Z.tif ...

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.