Daha çox

ArcObjects istifadə edərək polilini çoxbucağa çevirin


Məndə bir çox xətt var və onu tək bir çoxbucaqlı xüsusiyyətə çevirmək istəyirəm, bu kodu istifadə etdim, amma eyni formalı faylı ArcGIS-də çoxbucaqlıya çevirə biləndə səhv çıxdım. Səhvim hardadır?

ESRI.ArcGIS.DataManagementTools.FeatureToPolygon ftp = yeni ESRI.ArcGIS.DataManagementTools.FeatureToPolygon (path + "lines.shp", path + "polygons.shp"); ftp.attributes = "NO_ATTRIBUTES"; GP.Execute (ftp, boş);

Yol qurulub

string path = System.IO.Path.GetDirectoryName (Application.ExecutablePath) + @ " temp  Conversations ";

və ortaya çıxaran səhv:

HRESULT E_FAIL xətası bir COM komponentinə edilən zəngdən qaytarıldı.

Çıxış yolunu dəyişdirməyə çalışdım

"E: / MASTER / Project / Semirom / file gis semirom / Yeni Qovluq / gisiran.gdb / tester"

Ancaq mən eyni səhvi alıram ... Ətraf mühitini və ya buna bənzər bir şey təyin etməyimi düşünürsən? Mən də istifadə edirəm:

ESRI.ArcGIS.ConversionTools.GPXtoFeaturesESRI.ArcGIS.DataManagementTools.PointsToLine (yol + "nöqtələr.shp", yol + "xətlər.shp");eyni parametrlərlə və yaxşı işləyirlər ... :(

Bir çoxbucaqlı yaratmaq üçün daha yaxşı bir yanaşma varmı?


bunu sınayın

ESRI.ArcGIS.DataManagementTools istifadə; FeatureToPolygon featureToPolygon = yeni FeatureToPolygon (); featureToPolygon.in_features = pInWorkspace.PathName + "" + pInFeatureClassName.FeatureDatasetName.Name + " Temp_Line_UnNamed"; featureToPolygon.out_feature_class = pInWorkspace.PathName + "" + pInFeatureClassName.FeatureDatasetName.Name + " Master_Poly_UnNamed"; featureToPolygon.attributes = "ATTRIBUTES"; xüsusiyyətToPolygon.cluster_tolerance = 0.01; featureToPolygon.label_features = ""; RunTool (gp, xüsusiyyətToPolygon, boş); public static void RunTool (Geoprosessor geoprosessor, IGPProcess process, ITrackCancel tc) {// üzerine yazma seçimini true geoprocessor olaraq seçin.OverwriteOutput = true; // icra alətini sınayın {geoprocessor.Execute (process, null); ReturnMessages (jeoprosessor); } tutmaq (İstisna səhv) {Console.WriteLine (err.Message); ReturnMessages (jeoprosessor); }} xüsusi statik boşluq ReturnMessages (Geoprocessor gp) {if (gp.MessageCount> 0) {for (int i = 0; i <= gp.MessageCount - 1; i ++) {Console.WriteLine (gp.GetMessage (i)) ; }}}

Bu ??

statik boşluq Main () {Application.EnableVisualStyles (); Application.SetCompatibleTextRenderingDefault (false); ESRI.ArcGIS.RuntimeManager.Bind (ESRI.ArcGIS.ProductCode.EngineOrDesktop); Application.Run (yeni frmHydroLinesToPolygons ()); } xüsusi boşluq frmHydroLinesToPolygons_Load (obyekt göndərən, EventArgs e) {bool bLicenseAvailable; // ArcObjects komponentlərinin işləmə müddətini başlatır. // Bu sinif əvvəlcə Arcobject yaradılmış olmalıdır IAoInitialize aoInitialize = new AoInitializeClass (); esriLicenseStatus statusu; // ArcInfo Lisenziyasını yoxlayır - xüsusiyyəti çoxbucaqlı vəziyyətə çevirdikdə status = aoInitialize.Initialize (esriLicenseProductCode.esriLicenseProductCodeAdvanced); //.esriLicenseProductCodeArcInfo); //.esriLicenseProductCodeArcView); // lisenziyanın mövcud olub olmadığını yoxlayın ((status == esriLicenseStatus.esriLicenseAvailable) || (status == esriLicenseStatus.esriLicenseAlreadyInitialized) || (status == esriLicenseStatus.esriLicenseCheckedOut)) {bLicenseAvailable = true; } başqa {bLicenseAvailable = false; } // lisenziyasız olduqda - əgər (bLicenseAvailable! = true) {if (status == esriLicenseStatus.esriLicenseNotLicensed) {MessageBox.Show ("Bağışlayın ... Bu Proqram üçün ArcInfo Lisenziyası tələb olunur"); } bu.Close (); }}

Tələb olunan uzantıların lisenziyalarını yoxlamağınızı tələb edirsiniz:

aoInitialize.CheckOutExtension (esriLicenseExtensionCode.esriLicenseExtensionCode3DAnalyst); aoInitialize.CheckOutExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst);

Bir ArcView və ya ArcEditor lisenziyasından istifadə edərkən bir proqram açıq şəkildə AoIntialize istifadə etməli və məhsul ArcView ya da ArcEditor olaraq ayarlanmalı və ya proqram uğursuz olmalıdır. Varsayılan olaraq, jeoprosessor hər zaman bir skriptin icrası üçün ArcInfo lisenziyasının tələb olunduğunu düşünür; bu səbəbdən, bir proqram icra etdiyi alətlər tərəfindən tələb olunan məhsulu açıq şəkildə təyin etmirsə, bir ArcInfo lisenziyası işə salınır. Aşağıdakı kod nümunəsinə baxın:

bu nümunəni yoxlayın:

ESRI.ArcGIS.Geoprosessordan istifadə etmək; ESRI.ArcGIS.esriSystem istifadə; statik boşluq Main (string [] args) {// Tətbiqi başlat. esriLicenseStatus licenseStatus = esriLicenseStatus.esriLicenseUnavailable; IAoInitialize m_AoInitialize = yeni AoInitializeClass (); LicenseStatus = m_AoInitialize.Initialize (esriLicenseProductCode.esriLicenseProductCodeArcInfo); LicenseStatus = m_AoInitialize.CheckOutExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); // Jeoprosessoru işə salın. Geoprosessor gp = yeni Geoprosessor (); Yamac tSlope = yeni Yamac (); tSlope.in_raster = @ "E:  Data  demlatgrd"; tSlope.out_raster = @      E:  Data  aspect03 "; gp.Execute (tSlope, null); licenceStatus = m_AoInitialize.CheckInExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); m_AoInIn_A_Insto;

Yerinizi tapın

Məkandan xəbərdar olan tətbiqetmələr hazırlayarkən, ən çox görülən vəzifələrdən biri istifadəçinin cari yerini xəritədə göstərməkdir. Bunun üçün bir çox fərqli həll yolu var. Mümkün yollardan biri də cihazın daxili GPS sensorlarından yerlər almaq üçün Apple-in CoreLocation istifadə etməkdir.

HERE SDK, hər hansı bir xüsusi yerləşdirmə həlli ilə rəvan işləyir. Gələcəkdə daha inkişaf etmiş xüsusiyyətlərə sahib BURADA əhatəli bir konumlandırma həlli planlaşdırılır. Mümkün platformadan asılı bir tətbiq aşağıda göstərilmişdir.

Cihazın sensorlarına girmədən əvvəl istifadəçidən icazə istəməlisiniz. Info.plist dosyanıza aşağıdakı icazələri əlavə edin:

Sonra, iOS platformasından CLLocationManager nümunəsini alın və yer yeniləmələrini tələb edin:

Tədbirləri qəbul etmək üçün sinifimizin CLLocationManagerDelegate protokoluna uyğun olması lazımdır:

nümayəndə PlatformPositioningProviderDelegate tiplidir. Bu başqa bir sinifin asanlıqla xəbərdar olmasını təmin etmək üçün müəyyənləşdirdiyimiz bir protokoldur.

Bu, iOS məkan xidmətlərinə giriş təmin edən bir CLLocationManager-in necə birləşdiriləcəyinə dair bir nümunədir. Öz ehtiyaclarınıza uyğunlaşdırmaqdan çəkinməyin.

Aşağıda tam sinfi tapa bilərsiniz:

Bu sinfi öz tətbiqinizə inteqrasiya etmək üçün yeni bir nümunə yaradın və çağırış sinfini nümayəndə təyin edin:

Çağırış sinifini nümayəndə olaraq təyin edərək, PlatformPositioningProviderDelegate protokoluna uyğun olmalısınız və sinifiniz CLLocation hadisələrini almağa başlaya bilər:

Daha sonra aşağıdakı metodları axtararaq tapmağa və dayandırmağa davam edə bilərsiniz:

Qeyd edək ki, sinifimiz CLLocation tədbirləri alır. Onları ən çox yayılmış sahələri əhatə etmək üçün HERE SDK-nın istifadə etdiyi Yer sinifinə çevirmək üçün aşağıdakı metodu istifadə edin:

CLLocationManager və digər platforma yerləşdirmə xüsusiyyətlərindən istifadə qaydaları haqqında daha çox məlumat üçün rəsmi iOS sənədlərinə baxın.


Mücərrəd

Həqiqi dünya mühitindəki muxtar robotlar, müəyyən bir yerə keçmək kimi görünən sadə tapşırıqları yerinə yetirmək üçün belə bir sıra çətinliklərlə üzləşirlər. Robot naviqasiyasının qismən məlumatlandırma, iyerarxik quruluşlar və bir çox hədəfi nəzərə aldığı dörd real ssenarini təqdim edirik. Marşrutların zəhmət, risk və sosial təsirdən ötrü qorxunc olduğu insanlarla paylaşılan daxili mühitlərdə naviqasiyanı müzakirə etməyə başlayırıq. Ardından, optimal traektoriyaları düzəldərək və insanlara uyğun yerli naviqasiya davranışlarını tətbiq edərək naviqasiyanı yaxşılaşdırırıq. Nəhayət, robotların müəyyən keçilməzlik təxminlərinə güvəndikləri və tıxacda qalma və ya marşrutu dəyişdirmə riskini hesab etməli olduqları açıq mühitlərə keçirik.


Videoya baxın: 9. رسم مستطيل Rectangle ومضلع Polygon ورسم الكائنات متعددة الخطوط Multiline AutoCAD (Oktyabr 2021).