PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

पोस्टगिस + बूस्ट ::ज्योमेट्री + सी ++

मुझे संदेह है कि इस ऑपरेशन के लिए आपको PostGIS की आवश्यकता है।

मुझे यह भी संदेह है कि "इसे वैध बनाने" का एक तरीका है। क्योंकि बहुभुज में एक स्पष्ट आत्म प्रतिच्छेदन होता है:

यहां बताया गया है कि आप बूस्ट ज्योमेट्री में ही सत्यापन और सुधार कैसे करते हैं:

लाइव ऑन कोलिरू

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/geometries.hpp>
#include <boost/geometry/io/io.hpp>
#include <boost/geometry/algorithms/equals.hpp>
#include <iostream>

namespace bg = boost::geometry;
namespace bgm = boost::geometry::model;

template<typename G>
bool check(G const& g) {
    std::string reason;
    bool valid = bg::is_valid(g, reason);

    if (valid) std::cout << "Valid (dsv): " << bg::dsv(g) << "\n";
    else       std::cout << "Invalid: " << reason << "\n";

    return valid;
}

int main() {
    using pt = bgm::d2::point_xy<double>;
    using poly = bgm::polygon<pt>;

    poly p;
    bg::read_wkt("POLYGON((0 0, 10 0, 10 11, 11 10, 0 10))", p);

    while (!check(p)) {
        auto same = p;
        bg::correct(p);

        if (bg::equals(p, same)) {
            std::cout << "Out of ideas\n";
            break;
        }
    }
}

और आउटपुट नोट करें:

Invalid: Geometry is defined as closed but is open
Invalid: Geometry has invalid self-intersections. A self-intersection point was found at (10, 10); method: i; operations: u/i; segment IDs {source, multi, ring, segment}: {0, -1, -1, 1}/{0, -1, -1, 3}
Out of ideas

यदि आपके स्रोत में वास्तव में इस तरह के आत्म-चौराहे हैं, तो यह बताना कठिन है कि आप क्या चाहते हैं। शायद आप देखना चाहते हैं




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जेपीए के साथ वसंत में कस्टम प्रश्न

  2. रेल पोस्टग्रेज ERROR:टाइप डबल प्रिसिजन के लिए अमान्य इनपुट सिंटैक्स

  3. किचनपीसी और आयरनपीथन

  4. PostgreSql का उपयोग करके Ireports में छवि प्रदर्शित करना

  5. तालिका को पोस्टग्रेज करने के लिए स्पार्क डेटाफ्रेम यूपीएसईआरटी