/////////////////////////////////////////////////////////////////////////////// // Eine MapInfodatei öffnen HRESULT CMiTabDatasource::OpenFile(const char *pszNewName, bool fUpdate, bool fTestOpen) { _ASSERTE(NULL != pszNewName); if (NULL == pszNewName) return E_POINTER; mitab_handle hMIF = NULL; #if defined(_READWRITE) if (fUpdate) hMIF = mitab_c_create(pszNewName, NULL, NULL, 0.0, 0.0, 0.0, 0.0); else #endif // defined(_READWRITE) hMIF = mitab_c_open (pszNewName); if (NULL == hMIF) return S_FALSE; // Extract the basename of the file. COM_TRY { // Create the layer object and add layer to data source layer list. os_path path (pszNewName); m_Layers.push_back (new CMiTabLayer(path.base().c_str(), hMIF, fUpdate)); } COM_CATCH; return S_OK; }
static void WriteFile( const char * pszDest, const char * pszMifOrTab ) { mitab_handle dataset; mitab_feature feature; double x[100], y[100]; int field_index; dataset = mitab_c_create( pszDest, pszMifOrTab, "CoordSys Earth Projection 1, 0", 90, 0, 180, -180 ); if( dataset == NULL ) { printf( "Failed to create %s file %s.\n%s\n", pszMifOrTab, pszDest, mitab_c_getlasterrormsg() ); return; } /* -------------------------------------------------------------------- */ /* Add a text, float and integer field. */ /* -------------------------------------------------------------------- */ field_index = mitab_c_add_field( dataset, "TestInt", TABFT_Integer, 8, 0 ); assert( field_index == 0 ); field_index = mitab_c_add_field( dataset, "TestFloat", TABFT_Float, 12, 2 ); assert( field_index == 1 ); field_index = mitab_c_add_field( dataset, "TestString", TABFT_Char, 10, 0 ); assert( field_index == 2 ); /* -------------------------------------------------------------------- */ /* Write a point. */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Point ); x[0] = 98; y[0] = 50; mitab_c_set_points( feature, 0, 1, x, y ); mitab_c_set_symbol( feature, 41, 15, 255*256 ); mitab_c_set_field( feature, 0, "100" ); mitab_c_set_field( feature, 1, "100.5" ); mitab_c_set_field( feature, 2, "12345678901234567890" ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write a line. */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Polyline ); x[0] = 100; y[0] = 49; x[1] = 101; y[1] = 48; mitab_c_set_points( feature, 0, 2, x, y ); mitab_c_set_pen( feature, 1, 2, 255 ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write text. */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Text ); x[0] = 101; y[0] = 51; mitab_c_set_points( feature, 0, 1, x, y ); mitab_c_set_text( feature, "My text" ); mitab_c_set_font( feature, "Arial" ); mitab_c_set_text_display( feature, 45.0, /* angle */ 1.0, 7.0, /* Text MBR height and width */ 255*65536,/* FG Color */ 0, /* BG Color */ -1, -1, -1 ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write region (polygon). */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Region ); x[0] = 101; y[0] = 51; x[1] = 100; y[1] = 51; x[2] = 100; y[2] = 50; x[3] = 101; y[3] = 50; x[4] = 101; y[4] = 51; mitab_c_set_points( feature, 0, 5, x, y ); x[0] = 100.5; y[0] = 50.5; x[1] = 100.5; y[1] = 50.7; x[2] = 100.7; y[2] = 50.7; x[3] = 100.7; y[3] = 50.5; x[4] = 100.5; y[4] = 50.5; mitab_c_set_points( feature, 1, 5, x, y ); mitab_c_set_brush( feature, 255, 0, 2, 0 ); mitab_c_set_pen( feature, 1, 2, 65535 ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write multiple polyline (3 parts). */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Polyline ); x[0] = 111; y[0] = 57; x[1] = 110; y[1] = 57; x[2] = 110; y[2] = 56; mitab_c_set_points( feature, 0, 3, x, y ); x[0] = 108; y[0] = 56; x[1] = 109; y[1] = 57; mitab_c_set_points( feature, 1, 2, x, y ); x[0] = 105; y[0] = 55; x[1] = 105; y[1] = 57; x[2] = 107; y[2] = 57; x[3] = 107; y[3] = 55; mitab_c_set_points( feature, 2, 4, x, y ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write an arc */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Arc ); mitab_c_set_arc( feature, 70, 75, 10, 5, 45, 270); mitab_c_set_field( feature, 0, "123" ); mitab_c_set_field( feature, 1, "456" ); mitab_c_set_field( feature, 2, "12345678901234567890" ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write an ellipse */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Ellipse ); mitab_c_set_arc( feature, 70, 75, 10, 5, 0, 0); mitab_c_set_field( feature, 0, "1" ); mitab_c_set_field( feature, 1, "2" ); mitab_c_set_field( feature, 2, "3" ); mitab_c_set_brush( feature, 255, 0, 2, 0 ); mitab_c_set_pen( feature, 1, 2, 65535 ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Write rectangle. */ /* The MBR of the array of points will be used for the */ /* rectangle corners. */ /* -------------------------------------------------------------------- */ feature = mitab_c_create_feature( dataset, TABFC_Rectangle ); x[0] = 91; y[0] = 61; x[1] = 90; y[1] = 61; x[2] = 90; y[2] = 60; x[3] = 91; y[3] = 60; x[4] = 91; y[4] = 61; mitab_c_set_points( feature, 0, 5, x, y ); mitab_c_set_brush( feature, 255, 0, 2, 0 ); mitab_c_set_pen( feature, 1, 2, 65535 ); mitab_c_write_feature( dataset, feature ); mitab_c_destroy_feature( feature ); /* -------------------------------------------------------------------- */ /* Cleanup */ /* -------------------------------------------------------------------- */ mitab_c_close( dataset ); }