Пример #1
0
///////////////////////////////////////////////////////////////////////////////
// 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;
}
Пример #2
0
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 );
    
}