Көбірек

ArcObjects көмегімен полилинді көпбұрышқа ауыстырыңыз

ArcObjects көмегімен полилинді көпбұрышқа ауыстырыңыз


Менде полилин бар және мен оны көпбұрыштың бір ерекшелігіне айналдырғым келеді, мен бұл кодты қолдандым, бірақ мен қате жіберіп жатырмын, ал сол пішінді файлы арқылы ArcGIS-те көпбұрышқа ауыстыра аламын. Менің қателігім қайда?

ESRI.ArcGIS.DataManagementTools.FeatureToPolygon ftp = жаңа ESRI.ArcGIS.DataManagementTools.FeatureToPolygon (path + «lines.shp», path + «polygons.shp»); ftp.attributes = «NO_ATTRIBUTES»; GP.Execute (ftp, нөл);

Жол орнатылды

жол жолы = System.IO.Path.GetDirectoryName (Application.ExecutablePath) + @ « temp  Conversations »;

және туындайтын қателік:

COM компонентіне шақырудан HRESULT E_FAIL қатесі қайтарылды.

Мен шығу жолын өзгертуге тырыстым

«E: / MASTER / Project / Semirom / файл gis semirom / Жаңа қалта / gisiran.gdb / tester»

Бірақ менде дәл осындай қате бар ... Мен қоршаған ортаның жұмыс кеңістігін немесе сол сияқты нәрсені орнатуым керек деп ойлайсыз ба? Мен де қолданамын:

ESRI.ArcGIS.ConversionTools.GPXtoFeatureжәнеESRI.ArcGIS.DataManagementTools.PointsToLine (жол + «нүктелер.shp», жол + «сызықтар.shp»);бірдей параметрлермен және олар жақсы жұмыс істейді ... :(

Көпбұрышты құрудың жақсы тәсілі бар ма?


көріңіз

ESRI.ArcGIS.DataManagementTools қолдану; FeatureToPolygon featureToPolygon = жаңа 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»; featureToPolygon.cluster_tolerance = 0,01; featureToPolygon.label_features = «»; RunTool (gp, featureToPolygon, нөл); public static void RunTool (геопроцессорлық геопроцессор, IGPProcess процесі, ITrackCancel tc) {// қайта жазу опциясын шын геопроцессорға орнатыңыз.OverwriteOutput = true; // орындау құралын көріңіз {geoprocessor.Execute (процесс, нөл); ReturnMessages (геопроцессор); } аулау (Ерекше жағдай) {Console.WriteLine (қате. Хабарлама); ReturnMessages (геопроцессор); }} ReturnMessages (Geoprocessor gp) жеке статикалық бос орны {if (gp.MessageCount> 0) {for (int i = 0; i <= gp.MessageCount - 1; i ++) {Console.WriteLine (gp.GetMessage (i)) ; }}}

Бұл ??

статикалық бос орын Main () {Application.EnableVisualStyles (); Application.SetCompatibleTextRenderingDefault (жалған); ESRI.ArcGIS.RuntimeManager.Bind (ESRI.ArcGIS.ProductCode.EngineOrDesktop); Application.Run (жаңа frmHydroLinesToPolygons ()); } жеке void frmHydroLinesToPolygons_Load (объект жіберуші, EventArgs e) {bool bLicenseAvailable; // ArcObjects компоненттерін іске қосу ортасын инициализациялайды. // Бұл класс алдымен Arcobject құруы керек IAoInitialize aoInitialize = new AoInitializeClass (); esriLicenseStatus мәртебесі; // ArcInfo лицензиясының бар-жоғын тексереді - мүмкіндікті көпбұрышқа айналдырған кезде маңызды = aoInitialize.Initialize (esriLicenseProductCode.esriLicenseProductCodeAdvanced); //.esriLicenseProductCodeArcInfo); //.esriLicenseProductCodeArcView); // лицензияның бар-жоғын тексеріңіз, егер ((status == esriLicenseStatus.esriLicenseAvailable) || (status == esriLicenseStatus.esriLicenseAlreadyInitialized) || (status == esriLicenseStatus.esriLicenseCheckedOut)) {bLicenseAvailable = true; } else {bLicenseAvailable = жалған; } // егер лицензия болмаса - лицензияны инициализациялаңыз, егер (bLicenseAvailable! = true) {if (status == esriLicenseStatus.esriLicenseNotLicensed) {MessageBox.Show («Кешіріңіз ... Осы бағдарлама үшін ArcInfo лицензиясы қажет»); } this.Close (); }}

Қажетті кеңейтімдер лицензияларын тексеруді талап етесіз:

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

ArcView немесе ArcEditor лицензиясын қолданған кезде бағдарлама AoIntialize бағдарламасын нақты қолдануы керек, ал өнім ArcView немесе ArcEditor күйіне орнатылуы керек, немесе бағдарлама істен шығады. Әдепкі бойынша, геопроцессор сценарийді орындау үшін әрдайым ArcInfo лицензиясын талап етеді; сондықтан, егер бағдарлама өзі іске асыратын құралдарға қажетті өнімді нақты орнатпаса, ArcInfo лицензиясы инициализацияланады. Келесі код мысалын қараңыз:

мына мысалды тексеріңіз:

ESRI.ArcGIS.Geoprocessor пайдалану; ESRI.ArcGIS.esriSystem пайдалану; static void Main (string [] args) {// қосымшаны инициализациялау. esriLicenseStatus LicenseStatus = esriLicenseStatus.esriLicenseUnavailable; IAoInitialize m_AoInitialize = жаңа AoInitializeClass (); licenseStatus = m_AoInitialize.Initialize (esriLicenseProductCode.esriLicenseProductCodeArcInfo); licenseStatus = m_AoInitialize.CheckOutExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); // Геопроцессорды инициализациялау. Геопроцессор gp = жаңа геопроцессор (); Көлбеу tSlope = жаңа көлбеу (); tSlope.in_raster = @ «E:  Data  demlatgrd»; tSlope.out_raster = @      E:  Data  aspect03 «; gp.Execute (tSlope, null); licenceStatus = m_AoInitialize.CheckInExtension (esriLicenseExtensionCode.esriLicenseExtensionCodeSpatialAnalyst); m_Ao_Ino_Insto;

Орныңызды табыңыз

Орналасқан жерді білетін қосымшаларды құру кезінде ең көп таралған міндеттердің бірі - қолданушының ағымдағы орнын картада көрсету. Ол үшін көптеген әр түрлі шешімдер бар. Мүмкін болатын тәсілдердің бірі - Apple CoreLocation құрылғысын GPS сенсорларынан қондырғыларды алу үшін пайдалану.

HERE SDK кез-келген меншікті позициялау шешімімен біртіндеп жұмыс істейді. Болашақта кеңейтілген мүмкіндіктермен HERE позициялаудың кешенді шешімі жоспарлануда. Мүмкін болатын платформаға тәуелді жүзеге асыру төменде көрсетілген.

Құрылғының сенсорларына кірмес бұрын, пайдаланушыдан рұқсат сұрауыңыз керек. Info.plist файлына келесі рұқсаттарды қосыңыз:

Содан кейін, iOS платформасынан CLLocationManager данасын алыңыз және орналасқан жер туралы жаңартуларды сұраңыз:

Іс-шараларды қабылдау үшін біздің сынып CLLocationManagerDelegate хаттамасына сәйкес келуі керек:

делегат PlatformPositioningProviderDelegate типіне жатады. Бұл біз басқа сыныпқа оңай хабарландыру мүмкіндігін беру үшін біз анықтаған хаттама.

Бұл тек iOS орналасу қызметтеріне қол жеткізуді қамтамасыз ететін CLLocationManager-ді біріктірудің мысалы. Оны өз қажеттіліктеріңізге бейімдеу үшін қымсынбаңыз.

Төменде сіз толық сыныпты таба аласыз:

Осы сыныпты өзіңіздің бағдарламаңызға қосу үшін жаңа дананы жасаңыз және қоңырау сыныбын өкіл ретінде қойыңыз:

Шақыру сыныбын делегат ретінде орнату арқылы сіз PlatformPositioningProviderDelegate протоколына сәйкес келуіңіз керек және сіздің сынып CLLocation оқиғаларын ала бастайды:

Содан кейін келесі әдістерді шақыру арқылы табуды бастауға және тоқтатуға болады:

Біздің сыныпта CLLocation іс-шаралары өтетінін ескеріңіз. Оларды HERE SDK кең таралған өрістерді жабу үшін қолданатын Location класына ауыстыру үшін келесі әдісті қолданыңыз:

CLLocationManager туралы және платформаны орналастырудың басқа мүмкіндіктерін қалай пайдалану туралы қосымша ақпарат алу үшін iOS ресми құжаттамасын қараңыз.


Реферат

Нақты әлемдегі автономды роботтар белгілі бір жерге көшу сияқты қарапайым міндеттерді орындау үшін бірқатар қиындықтарға тап болады. Біз робот навигациясы ішінара информацияны, иерархиялық құрылымдарды және бірнеше мақсаттарды ескеретін төрт нақты сценарийді ұсынамыз. Біз адамдармен бөлісетін жабық ортадағы навигацияны талқылаудан бастаймыз, мұнда маршруттар күш, қауіп және әлеуметтік әсермен жүреді. Әрі қарай, біз оңтайлы траекторияларды құру және адамға ыңғайлы жергілікті навигация әрекеттерін енгізу арқылы навигацияны жетілдіреміз. Ақырында, біз роботтар белгілі бір өту мүмкіндігінің бағаларына сүйенетін және кептеліп қалу қаупін немесе маршрутты өзгертуді қажет ететін сыртқы ортаға көшеміз.


Бейнені қараңыз: 8 сынып. Геометрия. есеп. Көпбұрыштың бұрышы бойынша қабырғалар санын анықтау.