.NET के लिए Free Opensource Shapefile राइटर की तलाश करना


11

मैं एक अच्छी तरह से प्रलेखित, ओपन सोर्स लाइब्रेरी की तलाश में हूं जो .NET से एक आकृति फाइल को बना और लिख सकता है। मुझे कम लीवर एक्सेस की आवश्यकता है अर्थात मुझे फीचर द्वारा फीचर लिखने में सक्षम होना चाहिए।

मैंने जांच की है और निम्नलिखित पाया है:

क्या एक पुस्तकालय है जिसका उपयोग एक नया आकार लिखने के लिए किया जा सकता है?

जवाबों:


5

मैंने खुद इसका उपयोग नहीं किया है, लेकिन जल्दी से डॉटस्पैटियल के लिए दस्तावेज देख रहा हूं , ऐसा लगता है कि यह वही करना चाहिए जो आप चाहते हैं।

यह पर अलग-अलग विधानसभाओं है NuGet यदि आप जानते हैं कि कौन सा आप की जरूरत है (जो मैं नहीं)।

यहां एक नमूना है जो कम से कम संभावना को दर्शाता है। यह अच्छा होगा अगर एक अधिक पठनीय नमूने के लिए बनाने के लिए एक डब्ल्यूकेटी रीडर / कन्वर्टर था, लेकिन यह याद आ रहा है।


9

मै तुम्हारा दर्द समझ सकता हू। मैं NetTopologySuite (v1.13) के साथ एक ही तरह की चीज से गुजरा और इकाई परीक्षणों को देखने में कुछ सफलता मिली।

सबसे पहले, आप DotSpatial लाइब्रेरी की जाँच कर सकते हैं, जो डीएस शेपफाइल ऑपरेशंस के लिए एक समान प्रश्न में संदर्भित था

मैं एनटीएस लाइब्रेरी से व्यक्तिगत रूप से खुश हूं। एक बार जब आप ऑब्जेक्ट मॉडल का पता लगा लेते हैं, तो कुछ को एक साथ रखना बहुत ज्यादा उपद्रव नहीं होता है। चूँकि इस विषय को NTS की ओर से एक बार कोड लिखने के लिए त्वरित कोड डंप होने से अधिक संदर्भित किया जाएगा।

1) एनटीएस (1.13.0) बायनेरिज़ डाउनलोड करें

2) निम्नलिखित विधानसभाओं को देखें:

-GeoAPI, NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.IO.GeoTools (यह पता लगाने में कितना समय लगा कि यह पिछले एक के लिए आवश्यक था)

3) कुछ कोड लिखें (यह 10 मिनट का हैक काम है)

NetTopologySuite, NetTopologySuite.IO, NetTopologySuite.Features, GeoAPI, GeoAPI.Geometries के लिए बयानों का उपयोग करके जोड़ें (क्षमा करें, मुझे पता नहीं है कि कैसे एसओ को इनका प्रारूप प्राप्त करने के लिए)

        string path = @"C:\data\atreides";
        string firstNameAttribute = "firstname";
        string lastNameAttribute = "lastname";

        //create geometry factory
        IGeometryFactory geomFactory = NtsGeometryServices.Instance.CreateGeometryFactory();

        //create the default table with fields - alternately use DBaseField classes
        AttributesTable t1 = new AttributesTable();
        t1.AddAttribute(firstNameAttribute, "Paul");
        t1.AddAttribute(lastNameAttribute, "Atreides");

        AttributesTable t2 = new AttributesTable();
        t2.AddAttribute(firstNameAttribute, "Duncan");
        t2.AddAttribute(lastNameAttribute, "Idaho");

        //create geometries and features
        IGeometry g1 = geomFactory.CreatePoint(new Coordinate(300000, 5000000));
        IGeometry g2 = geomFactory.CreatePoint(new Coordinate(300200, 5000300));

        Feature feat1 = new Feature(g1, t1);
        Feature feat2 = new Feature(g2, t2);

        //create attribute list
        IList<Feature> features = new List<Feature>() { feat1, feat2 };
        ShapefileDataWriter writer = new ShapefileDataWriter(path) { Header = ShapefileDataWriter.GetHeader(features[0], features.Count) };

        System.Collections.IList featList = (System.Collections.IList)features;
        writer.Write(featList);

इसलिए, अच्छी तरह से प्रलेखित नहीं किया गया है, लेकिन जब आप जा रहे हैं तो यह काफी महत्वपूर्ण बिंदु है और शूट करें।


2

आकारबली भी है: http://shapelib.maptools.org/

एक .NET आवरण वेबपृष्ठ पर सूचीबद्ध होता है।


1

आप MapWinGIS पर भी विचार कर सकते हैं ।

MapWinGIS.ocx का उपयोग किसी भी विंडोज फॉर्म आधारित एप्लिकेशन को जीआईएस और मैपिंग कार्यक्षमता प्रदान करने के लिए किया जाता है। MapWinGIS.ocx एक मुफ़्त और खुली स्रोत C ++ आधारित भौगोलिक सूचना प्रणाली प्रोग्रामिंग ActiveX नियंत्रण और एप्लिकेशन प्रोग्रामर इंटरफ़ेस (API) है, जिसे विज़ुअल बेसिक, C #, डेल्फी, या अन्य भाषाओं में जोड़ा जा सकता है जो ActiveX का समर्थन करते हैं, आपके ऐप को प्रदान करते हैं। एक नक्शे के साथ।



1

शायद एक खिंचाव लेकिन ...

PyShp आपको शुद्ध पायथन में फ़ीचर-लेवल शेपफाइल कंट्रोल या अधिक देता है: http://code.google.com/p/pyshp/

IronPython आप शुद्ध CLth स्क्रिप्ट को .NET CLR पर चलाते हैं: http://ironpython.net/

इस धागे जैसे .Net लाइब्रेरी में आयरनपाइथन स्क्रिप्ट को चालू करें: /programming/1578010/ironpython-2-6-py-exe/9609120#9609120


1

हालाँकि यह पहले ही उत्तर दिया जा चुका है, लेकिन बाद की तारीख में इसे देखने वाले किसी व्यक्ति के लिए एक सुझाव EGIS (ईज़ी जीआईएस) भी है, जो आकार-प्रकार के लिए फीचर द्वारा लिखित सुविधा की अनुमति देता है।

ShapeFileWriter sfw = ShapeFileWriter.CreateWriter(dir,fileName,shapeType,dataFieldHeadings);
sfw.AddRecord(pointArray, pointCount, fieldData);

यह पसंद की आकृति में एक विशेषता जोड़ता है और AddRecord पद्धति में 7 अधिभार हैं।


क्या आप एक कोड स्निपेट पोस्ट कर सकते हैं जो दिखाता है कि यह कैसे किया जा सकता है? यदि लिंक मृत हो जाता है, तो इसकी वर्तमान स्थिति में इसका उत्तर स्वयं पर नहीं हो सकता है।
देवदत्त तेंग्शे

0

मैं ईजीजीआईएस की सिफारिश कर सकता हूं। Https://www.easygisdotnet.com से नवीनतम संस्करण को डाउनलोड करें , इसमें शामिल करें EGIS.ShapeFileLibऔर कुछ पंक्तियों के साथ आप अपना पहला शेपफाइल बनाएं। नीचे दिए गए कोड में एक गुणकारी फ़ील्ड "नाम" और एक आकृति (नाम "FirstRecord" के साथ एक आयत) के साथ एक बहुभुज आकार का बना होता है।

DbfFieldDesc[] lFields = new DbfFieldDesc[1];
DbfFieldDesc fld1 = new DbfFieldDesc();
fld1.FieldName = "Name";
fld1.FieldType = DbfFieldType.Character;
fld1.FieldLength = 16;
lFields[0] = fld1;
ShapeFileWriter sfw = ShapeFileWriter.CreateWriter(sExportDir, "testShapeFile", ShapeType.Polygon, lFields);
PointD[] lPoints = new PointD[4];
lPoints[0] = new PointD(1, 1);
lPoints[1] = new PointD(1, 2);
lPoints[2] = new PointD(2, 2);
lPoints[3] = new PointD(2, 1);
String[] lFieldValues = new String[1];
lFieldValues[0] = "FirstRecord";
sfw.AddRecord(lPoints, 4, lFieldValues);
sfw.Close();
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.