יותר

כיצד אוכל לעדכן נתוני postgis מ- shp?


עכשיו, אני יודע להכניס קובץ shap ל- PostGIS באמצעותshp2pgsql.exe. אם יש לי קובץ עיצוב מעודכן ואני רוצה לעדכן רק את השורות המעודכנות, כיצד אוכל לדעת את הטבלה המתעדכנת?


בהתחשב בכך שאתה מספק את נתוני קובץ העיצוב במלואו בחזרה ל- Postgres בעת הוצאת הפקודה shp2pgsql מחדש, הדרך היחידה תהיה לייבא לטבלה זמנית ולהעתיק על פני השורות השונות מהמקור שלך. עד שהיית צריך להשוות כל שורה, ממילא אולי היית מחליף את כל העניין בטבלה הזמנית. עם זאת, אם תוכל איכשהו לקבל קובץ צורה של השינויים בלבד, תוכל פשוט לעבור על השורות שיובאו.


שימוש ב- shp2pgsql ו- pgsql במערכת Mac אך העיקרון צריך להיות זהה למה שמופיע כאן.

  1. טען את קובץ הצורה שהשתנה לטבלה זמנית;
  2. עדכן את השורה הנכונה של הטבלה המקורית רק עם הגיאומטריה מתוך קובץ הצורה שהשתנה.

טען את קובץ הצורה שהשתנה ל- PostGIS (אני משתמש בצינור הבש ('|') כאן כדי לשלוח את ה- SQL מ- shp2pgsql ישירות ל- psql, לא בטוח כיצד היית עושה זאת ב- Windows):

shp2pgsql updated.shp testing.temp2 | psql -d myDB

עכשיו עדכן את הטבלה המקורית עם psql:

pgsql -d myDB -c "UPDATE testing.temp2 SET geom = (SELECT geom FROM public.original WHERE gid = 1) WHERE gid = 1"

בדוגמה למעלה:

  • ציבורי.מקוריהאם הטבלה נטענה בעבר;
  • updated.shpהוא קובץ הצורה שהשתנה;
  • test.tempהוא נתוני הבמה (טבלה זמנית);
  • השורה הראשונה (gid = 1) הוא נתוני ההחלפה בדוגמה זו אך יכולים להיות כל שורה.