स्वचालित लेबलिंग वास्तव में एक कठिन समस्या है, लेकिन फीचर ज्यामिति इतनी बुरी नहीं है।
यहां तक कि अगर आप ज्यादातर समय पर्याप्त रूप से काम करने के लिए प्लेसमेंट प्राप्त कर सकते हैं, तो भी अपवाद होने की संभावना है। इनमें से कुछ आप नोटिस करेंगे और संबोधित करने में सक्षम हो सकते हैं। दूसरों को आप एक बड़े मानचित्र या टाइल बनाने पर ध्यान नहीं देंगे क्योंकि आप अपने नक्शे के प्रत्येक इंच को विभिन्न प्रकार के तराजू पर नहीं डाल सकते हैं। लगभग हमेशा आपके पास कार्टोग्राफिक दृष्टिकोण से कुछ स्वचालित रूप से रखे गए लेबल को मैन्युअल रूप से स्थानांतरित करने का आग्रह होगा।
जैसा कि मैंने अपनी टिप्पणी में सुझाव दिया था, मैं लेबलिंग इंजन के लिए समस्या को आसान बनाऊंगा। इस मामले में, मैं अपनी नदियों को एक टेबल व्यू * के रूप में परिभाषित करके ऐसा करूंगा, जिसमें झील की सीमाओं का सम्मान करने के लिए नदी के ज्यामिति का उपयोग किया जाएगा। इस तरह, झीलों के अंदर कोई नदी की विशेषताएं नहीं होती हैं, और कोई लेबल टकराव नहीं होता है।
* मुझे लगता है कि सुविधा के लिए, PostgreSQL / PostGIS जैसे RDBMS का उपयोग केवल डेटा के अपने आधिकारिक स्रोत को अपडेट करने और आपके हस्तक्षेप के बिना ही देखने का कार्य करने की क्षमता है। लेकिन आप स्टैटिक फाइल्स के साथ कुछ काम भी कर सकते हैं, फीचर्स को क्लिप और डिलीट करने के लिए, लेकिन अगर आप कभी मैप को रिवाइज करने की योजना बनाते हैं तो मैं इसकी सलाह नहीं देता।
उदाहरण:
नदियों और झीलों के दो शेपफाइल्स (डेटाबेस टेबल हो सकते हैं) के साथ शुरू, नदियों के साथ झीलों को काटते हुए और लेबलिंग मुद्दों के कारण जो पूरी तरह और आत्मविश्वास से हल करना मुश्किल है:
यदि आप shp2pgsql के साथ की जरूरत है तो Postgres में इन्हें लाएं :
shp2pgsql -s 4326 /data/lake public.lakes | psql -d mydb
shp2pgsql -s 4326 /data/river public.rivers | psql -d mydb
फिर ST_Difference के साथ एक दृश्य परिभाषित करें :
CREATE OR REPLACE VIEW rivers_clipped AS
SELECT r.id, ST_Difference(r.geom, l.geom) AS geom, r.name
FROM public.rivers AS r, public.lakes AS l;
अपने लेआउट में दृश्य जोड़ें:
यद्यपि मेरे उदाहरण में समस्या जानबूझकर गढ़ी गई है, दो नदी की परतों (मूल और दृश्य) में शैली समान हैं, और उन्हें ड्राइंग ऑर्डर में झील के ऊपर रखा गया है। जब आप झीलों या नदियों के ज्यामिति को अपडेट करते हैं, तो आपको रेंडरिंग को रीफ्रेश करने से ज्यादा कुछ करने की जरूरत नहीं होगी।