יותר

סקריפט פייתון לזהות ולהפוך קווים ממוגנים בכיוון הלא נכון?


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


אני עושה זאת על ידי יצירת מסלולים מהקווים באמצעות הכלי צור מסלול כדי לקבל את הקווים עם תכונות מזהה נפוצות (כמו שם נהר) יחד יחד ולכוון בכיוון אחד. לאחר מכן חלץ את נקודות הקצה FROM ו- TO של השורות המקוריות למחלקות תכונות נקודתיות נפרדות בעזרת הכלי תכונת קודקודים לנקודות. אני משתמש בכלי איתור תכונות לאורך מסלולים עם נקודות הסיום של הקו כדי לקבל את ערכי ה- M של נקודות הקצה של הקו ובוחר רק ברשומות שבהן התכונה ROUTE_ID משותפת לנקודות ולייצא אותן. לאחר מכן אני מצטרף לנקודות From לשורות המקוריות בשדות ORIG_FID ו- OBJECTID ולאחר מכן מצטרף לנקודות To אל השורות המקוריות באותם השדות. אני בוחר את כל השורות שיש להן מידות שפחות מהמידות From. קווים אלה הופכו מהכיוון שלי הרצוי, המיוצג על ידי המסלול. לאחר מכן אני שובר את ההצטרפות ומיישם את הכלי Flip Line על כל השורות שנבחרו (בצע גיבוי של השורות שלך לפני שתעשה זאת, מכיוון שכלי זה משנה ישירות את נתוני השורה המקוריים שלך). מסלולי הסתעפות ייצרו בעיות ויש לפשט אותם למסלולים שאינם מסועפים כדי לקבל את התוצאות הטובות ביותר. הרשת שלי מיועדת לכבישים ולכן קבלת מסלולים לא מסועפים היא פשוטה יותר בשבילי ממה שיהיה לך עם הנהרות שלך, אבל המאמץ שווה את זה ופחות ופחות מועד לשגיאות מכל סקריפטים שראיתי או יצרתי שמנסים להשוות קו לקו.


צפו בסרטון: Python Programming Session 9 (אוֹקְטוֹבֶּר 2021).