আরকোবজেক্টস ব্যবহার করে এসরি জ্যামিতি এবং ডব্লিউকেটির মধ্যে রূপান্তর করা হচ্ছে?


17

দেখে মনে হচ্ছে আরকজিআইস আরকোবজেক্টস এপিআই-তে কোনও অর্কবজেক্ট জ্যামিতিকে সুপরিচিত পাঠ্য উপস্থাপনায় (এবং তদ্বিপরীত) রূপান্তর করার কোনও উপায় নেই। আমি যে জিনিসটি খুঁজে পেতে পেরেছিলাম তা হ'ল ডাব্লুকেবি (আইডাব্লুকিবি ইন্টারফেস) এ রূপান্তর।

জ্যামিতি অবজেক্ট এবং ডব্লিউকেটি-র মধ্যে রূপান্তর করার কোনও উপায় আছে বা আমাকে নিজে এটি প্রয়োগ করতে হবে? আমি প্রাথমিকভাবে অনেক বাহ্যিক নির্ভরতা ছাড়াই। নেট বাস্তবায়ন লক্ষ্য করি।

উত্তর:


7

অতীতে, আমি শার্পম্যাপের রূপান্তরকারী ব্যবহার করেছি, তবে আমার প্রথমে ডব্লিউকেবিতে যেতে হয়েছিল। আমি জানি না এটি এখন সেরা বিকল্প কিনা।

SharpMap.Geometries.IGeometry sharpGeom = SharpMap.Converters.WellKnownBinary.GeometryFromWKB.Parse(geombytes);
wkt = SharpMap.Converters.WellKnownText.GeometryToWKT.Write(sharpGeom);

গিথুবে শার্পম্যাপ

বর্তমান শার্পম্যাপ সংগ্রহস্থলটি কোথায় আছে তাও আমি জানি না, তবে আমি এখানে শ্রেণীর একটি রেফারেন্স পেয়েছি:

এই সময়, আমি মনে করি আমি কোডপ্লেক্স থেকে শার্পম্যাপ ব্যবহার করছিলাম।

আমি জিগিজিসের কথা ভুলে গিয়েছিলাম। আপনি সেই কোডটি তৈরি করতে সক্ষম হতে পারেন - এই লিঙ্কটিটি পুরানো জিগজি। এটি oPolygonToWkt, aoPointToWkt, aoPolylineToWkt পদ্ধতি যা আমি ভাবছি তা কাজ করবে: https://code.google.com/archive/p/ziggis/downloads


এএফআইএকে কোডেপ্লেক্সে এখনও সর্বাধিক বর্তমান শর্টম্যাপ সংগ্রহস্থল রয়েছে। sharpmap.codeplex.com
কার্ক Kuykendall

ধন্যবাদ. আমি সম্ভবত আমার নিজের থেকেই রূপান্তরটি বাস্তবায়ন করব, তবে বিদ্যমান ওএস প্রকল্পগুলির কোড কিছু মূল্যবান পয়েন্টার সরবরাহ করতে পারে।
পেটর ক্রেবস

@ জয়কুমিনস জিগজিআইএস লিঙ্কটি মারা গেছে
বারবারোসা

@ বারবারোসা, আমি জানি - আমি এটি সন্ধান করার চেষ্টা করছি। যদিও আমি সন্দেহ করি এটি অবসরপ্রাপ্ত।
জে কামিন্স

12

আইডব্লিউকিবি ইন্টারফেস ব্যবহার করে আইজিওমিট্রি এবং ডাব্লুকেবি-র মধ্যে রূপান্তর করতে একটি দুর্দান্ত কাজ করে। একটি ডব্লিউকেবি থেকে আপনি মাইক্রোসফ্ট.এস.এল.এস.এল. সার্ভার.টাইপস লাইব্রেরি ব্যবহার করতে পারেন ডাব্লুকেবি স্কেল জিওমেট্রি এবং তারপরে ডব্লিউকেটিতে রূপান্তর করতে।

IWkb wkb = geometry as (IWkb); //(Where geometry is an instance of IGeometry)
byte[] wkb_bytes = new byte[wkb.WkbSize];
int byte_count = wkb.WkbSize;
wkb.ExportToWkb(ref byte_count, out wkb_bytes[0]);

এই মুহুর্তে আপনি ডাব্লুকেবি wkb_bytes এ সঞ্চয় আছে। আপনি যদি সেক্লি জিওমেট্রিতে পরবর্তী পদক্ষেপটি যেতে চান তবে ডব্লুকেটিতে যান:

SqlGeometry sqlGeom = SqlGeometry.STGeomFromWKB(new SqlBytes(wkb_bytes), srid);
string wkt = sqlGeom.ToString();

1
আপনার দৃষ্টিভঙ্গি আমার পক্ষে ভাল কাজ করেছে বলে মনে হচ্ছে তবে আমি sridএখানে আমার পছন্দ সম্পর্কে ভাবছি । আমি এটি ব্যবহার করেছি: int srid = feature.Shape.SpatialReference.FactoryCode;আপনি কি এই প্রয়োগের সাথে একমত?
elrobis

2
যতক্ষণ আপনি এসরির পূর্ব নির্ধারিত স্থানাঙ্ক সিস্টেমগুলির মধ্যে একটি ব্যবহার করছেন এটি কাজ করবে। ডকুমেন্টেশন নীচে নোট করে "যদি আপনি একটি কাস্টম প্রজেক্টেড সমন্বিত সিস্টেম তৈরি করেন তবে কারখানার কোডটি শূন্য।"
সেজেব্রাশজিআইএস

5

আপনি মাইক্রোসফ্ট.এস.এল.এস.এল. সার্ভার.টাইপস সমাবেশ (যা আমি বিশ্বাস করি যে ফ্রি এসকিএল সার্ভার এক্সপ্রেস সংস্করণে অন্তর্ভুক্ত রয়েছে) উল্লেখ করার চেষ্টা করতে পারেন, তারপরে একটি মাইক্রোসফ্ট জ্যামিতি তৈরি করতে STGeomFromWKB স্ট্যাটিক পদ্ধতি ব্যবহার করুন , যা STAsText ব্যবহার করে ডব্লিউকেটিতে রূপান্তরিত হতে পারে ।

আরও মনে রাখবেন যে মাইক্রোসফ্ট মালিকানাধীন হওয়ার বিষয়ে প্রচুর ঝাঁকুনি ধরার সময় তারা কোডপ্লেক্সে তাদের স্কেল সার্ভার স্পেসিয়াল সরঞ্জামগুলিতে প্রচুর দরকারী ফাংশনগুলিতে উত্স কোড সরবরাহ করে । সুতরাং যদি আপনার জন্য স্কেল সার্ভারটি টাইপগুলি খুব বেশি বাহ্যিক নির্ভরতা হয় তবে আপনি এটি করতে পারে এমন উত্স কোড খুঁজে পেতে সক্ষম হতে পারেন।


ধন্যবাদ, আমি আমার বাস্তবায়নের জন্য কোনও এমএসকিউএল বিটকে টেনে আনতে চাই না, তবে উত্সটির কয়েকটি আকর্ষণীয় হতে পারে।
পেটর ক্রেবস

3

এনটিএস ডাব্লুকেটি "কথা বলতে" পারে এবং ডব্লিউকেবি এবং ডব্লিউকেটি উভয়ের জন্য পাঠক এবং লেখক রয়েছে। সুতরাং আপনার যদি ডব্লুকেবি থাকে, এনটিএস এটি পড়তে পারে এবং ডব্লুকেটিতে লিখতে পারে।

তবে, আপনি একটি আরকোবজেক্টস জ্যামিতির বৈশিষ্ট্য এবং তারপরে ডব্লিউকেটি হিসাবে আউটপুট ব্যবহার করে এনটিএস অবজেক্টগুলিও তৈরি করতে পারেন।

আমাদের একটি আরকোবজেক্ট প্রকল্পের জন্য আমরা এনটিএসের জ্যামিতিটি প্রায় ঘুরিয়ে আনার জন্য ইউটিলিটি পদ্ধতি তৈরি করেছি (বেশিরভাগ বিকল্প প্রজেকশন পদ্ধতি এনটিএস অফারগুলির সুবিধা নিতে)।


আপনাকে ধন্যবাদ, এনটিএস এবং জিওটুলস দেখতে ভাল লাগছে, আমি আমার প্রয়োগে কিছু বিট পুনরায় ব্যবহার করতে পারি।
পেটর ক্রেবস

3

DNRGPS ওপেন সোর্স প্রকল্প (লাইসেন্সিং এখানে ) মধ্যে রূপান্তরের জন্য এক্সটেনশন পদ্ধতি আছে IGeometryউইকেটরক্ষক এবং, যদিও আপনি মানিয়ে তাদের ব্যবহার করতে চাই IObjectFactoryআপনি তাদের একটি ArcGIS আবেদন বাহিরে ব্যবহার করতে চান।

লাইসেন্সটি বেশ অনুমতিপ্রাপ্ত দেখাচ্ছে তাই আমি যদি আমার আগ্রহী হন তবে আমি আমার স্ট্যান্ডেলোন সংস্করণ (ব্যবহার করে না IObjectFactory) এটি গিটহাবের উপরে রেখেছি :

আপডেট: আউটপুট জ্যামিতি অবজেক্টের জন্য স্থানিক রেফারেন্স প্রয়োগ এবং কোনও নির্দিষ্ট না করা থাকলে একটি পূর্ণসংখ্যা সমন্বয়কারী বন্ধুত্বপূর্ণ ডিফল্ট স্পেসিয়াল রেফারেন্স (প্লেট ক্যারি) ব্যবহার করার জন্য আমি আমার সংস্করণে কয়েকটি উন্নতি করেছি।


আপনাকে ধন্যবাদ, দরকারী দেখুন। আমি আসলে আমার নিজের ডাব্লুটিটি পার্সার লিখতে শেষ করেছি। যদিও এটি উত্সটি খুলতে পারে না।
পেট্র ক্রেবস

-2

জ্যামিতি ব্রিজ দেখুন, এটি আপনাকে সাহায্য করতে সক্ষম হতে পারে। http://help.arcgis.com/en/sdk/10.0/arcobjects_net/conceptualhelp/index.html#//00010000039n000000


এটি কোনও ডব্লিউকেটি-সম্পর্কিত পদ্ধতি সরবরাহ করে না ... আপনি সম্ভবত এটি ডাব্লুকেএস দিয়ে বিভ্রান্ত করছেন, যা জ্যামিতির একটি নিরাপদ উপস্থাপনা (থ্রেড সুরক্ষা এবং এর জন্য দরকারী)।
পেটর ক্রেবস


@ ম্যাপের্জ: সেখানেও তাকালেন, তবে জ্যামিতি নয়, কেবল ডাব্লুকেটি সমন্বিত সিস্টেম এবং ইউনিটগুলির উপস্থাপনার জন্য কাজ করেন
পেট্রে ক্রেবস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.