///**********************************************************************
///************************************************************************/
///* testReportFile */
///************************************************************************/
public
void
testReportfile()
{
ReportFile(
"c:\\temp\\testtab.tab"
,
"c:\\temp\\testtab.txt"
);
}
///************************************************************************/
///* ReportFile */
///************************************************************************/
public
void
ReportFile(
string
pszFilename,
string
pszReportname)
{
long
dataset = 0;
long
feature_id = 0;
long
num_fields = 0;
long
feature = 0;
long
feature_type = 0;
long
num_parts = 0;
long
partno = 0;
long
pointno = 0;
long
fieldno = 0;
long
num_points = 0;
double
dX = 0;
double
dY = 0;
string
sTmp =
null
;
string
sTmp2 =
null
;
long
i1 = 0;
long
i2 = 0;
dataset = mitab_c_open(pszFilename);
if
(dataset == 0)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_getlasterrormsg_vb(sTmp, 255);
MessageBox.Show(
"mitab_c_open: "
+ pszFilename +
" failed."
+ Environment.NewLine + sTmp.Substring(0, i1));
return
;
}
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_get_mif_coordsys_vb(dataset, sTmp, 255);
Print #1,
"Coodsys Clause: "
; sTmp.Substring(0, i1);
num_fields = mitab_c_get_field_count(dataset);
feature_id = mitab_c_next_feature_id(dataset, -1);
while
(feature_id != -1)
{
///* -------------------------------------------------------------------- */
///* Read next feature object */
///* -------------------------------------------------------------------- */
feature = mitab_c_read_feature(dataset, feature_id);
if
(feature == 0)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_getlasterrormsg_vb(sTmp, 255);
MessageBox.Show(
"Failed to read feature "
+ Str$(feature_id) + Environment.NewLine + sTmp.Substring(0, i1));
return
;
}
feature_type = mitab_c_get_type(feature);
num_parts = mitab_c_get_parts(feature);
Print #1,
""
;
Print #1,
"Read feature "
+ Str$(feature_id) +
": type="
+ Str$(feature_type) +
", num_parts="
+ Str$(num_parts);
///* -------------------------------------------------------------------- */
///* Dump the feature attributes... */
///* -------------------------------------------------------------------- */
for
(fieldno = 0; fieldno < num_fields; fieldno++)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_get_field_name_vb(dataset, fieldno, sTmp, 255);
sTmp2 =
new
string
(
' '
, 255);
i2 = mitab_c_get_field_as_string_vb(feature, fieldno, sTmp2, 255);
Print #1,
" "
+ sTmp.Substring(0, i1) +
"="
+ sTmp2.Substring(0, i2);
}
///* -------------------------------------------------------------------- */
///* ... and coordinates. */
///* In real applications, we would probably want to handle each */
///* object type differently but we won't do it here. */
///* -------------------------------------------------------------------- */
for
(partno = 0; partno < num_parts; partno++)
{
Print #1,
" Part no "
+ Str$(partno + 1);
num_points = mitab_c_get_vertex_count(feature, partno);
for
(pointno = 0; pointno < num_points; pointno++)
{
dX = mitab_c_get_vertex_x(feature, partno, pointno);
dY = mitab_c_get_vertex_y(feature, partno, pointno);
Print #1,
" "
; dX; dY;
}
}
mitab_c_destroy_feature (feature);
feature_id = mitab_c_next_feature_id(dataset, feature_id);
}
mitab_c_close (dataset);
if
(mitab_c_getlasterrorno() != 0)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_getlasterrormsg_vb(sTmp, 255);
MsgBox
"Last Error: "
+ sTmp.Substring(0, i1);
}
}
///************************************************************************/
///* CopyFile() */
///************************************************************************/
public
void
CopyFile(
string
pszSource,
string
pszDest)
{
MessageBox.Show(
"Copy File not implemented at this time."
);
}
///************************************************************************/
///* testWriteFile */
///************************************************************************/
public
void
testWritefile()
{
WriteFile(
"c:\\temp\\testtab.tab"
,
"tab"
);
}
///************************************************************************/
///* WriteFile() */
///************************************************************************/
public
void
WriteFile(
string
pszDest,
string
pszMifOrTab)
{
long
dataset = 0;
long
feature = 0;
double
[] x =
new
double
[100];
double
[] y =
new
double
[100];
long
field_index = 0;
string
sTmp =
null
;
long
i1 = 0;
long
i2 = 0;
dataset = mitab_c_create(pszDest, pszMifOrTab,
"CoordSys Earth Projection 1, 0"
, 90, 0, 180, -180);
if
(dataset == 0)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_getlasterrormsg_vb(sTmp, 255);
MessageBox.Show(
"Failed to create "
+ pszMifOrTab +
" file: "
+ pszDest + Environment.NewLine + sTmp.Substring(0, i1));
return
;
}
///* -------------------------------------------------------------------- */
///* Add a text, float and integer field. */
///* -------------------------------------------------------------------- */
field_index = mitab_c_add_field(dataset,
"TestInt"
, TABFT_Integer, 8, 0, 0, 0);
field_index = mitab_c_add_field(dataset,
"TestFloat"
, TABFT_Float, 12, 2, 0, 0);
field_index = mitab_c_add_field(dataset,
"TestString"
, TABFT_Char, 10, 0, 0, 0);
///* -------------------------------------------------------------------- */
///* 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[0], y[0]);
i1 = 256;
i2 = 255;
i1 = i1 * i2;
mitab_c_set_symbol(feature, 41, 15, i1);
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 MultiPoint. */
///* -------------------------------------------------------------------- */
feature = mitab_c_create_feature(dataset, TABFC_MultiPoint);
x[0] = 90;
y[0] = 51;
x[1] = 90.5;
y[1] = 51.5;
x[2] = 91;
y[2] = 52;
mitab_c_set_points(feature, 0, 3, x[0], y[0]);
i1 = 256;
i2 = 255;
i1 = i1 * i2;
mitab_c_set_symbol(feature, 41, 15, i1);
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[0], y[0]);
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[0], y[0]);
mitab_c_set_text(feature,
"My text"
);
mitab_c_set_font(feature,
"Arial"
);
mitab_c_set_text_display(feature, 45, 1, 7, 255 * 65536, 0, -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[0], y[0]);
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[0], y[0]);
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 a second region with two polygon (polygon). */
///* -------------------------------------------------------------------- */
feature = mitab_c_create_feature(dataset, TABFC_Region);
x[0] = 101;
y[0] = 41;
x[1] = 100;
y[1] = 41;
x[2] = 100;
y[2] = 40;
x[3] = 101;
y[3] = 40;
x[4] = 101;
y[4] = 41;
mitab_c_set_points(feature, 0, 5, x[0], y[0]);
x[0] = 100.5;
y[0] = 40.5;
x[1] = 100.5;
y[1] = 40.7;
x[2] = 100.7;
y[2] = 40.7;
x[3] = 100.7;
y[3] = 40.5;
x[4] = 100.5;
y[4] = 40.5;
mitab_c_set_points(feature, 1, 5, x[0], y[0]);
x[0] = 100.2;
y[0] = 40.2;
x[1] = 100.2;
y[1] = 40.4;
x[2] = 100.4;
y[2] = 40.4;
x[3] = 100.4;
y[3] = 40.2;
x[4] = 100.2;
y[4] = 40.2;
mitab_c_set_points(feature, 2, 5, x[0], y[0]);
x[0] = 96;
y[0] = 46;
x[1] = 95;
y[1] = 46;
x[2] = 95;
y[2] = 45;
x[3] = 96;
y[3] = 45;
x[4] = 96;
y[4] = 46;
mitab_c_set_points(feature, 0, 5, x[0], y[0]);
x[0] = 95.5;
y[0] = 45.5;
x[1] = 95.5;
y[1] = 45.7;
x[2] = 95.7;
y[2] = 45.7;
x[3] = 95.7;
y[3] = 45.5;
x[4] = 95.5;
y[4] = 45.5;
mitab_c_set_points(feature, 4, 5, x[0], y[0]);
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[0], y[0]);
x[0] = 108;
y[0] = 56;
x[1] = 109;
y[1] = 57;
mitab_c_set_points(feature, 1, 2, x[0], y[0]);
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[0], y[0]);
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[0], y[0]);
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);
if
(mitab_c_getlasterrorno() != 0)
{
sTmp =
new
string
(
' '
, 255);
i1 = mitab_c_getlasterrormsg_vb(sTmp, 255);
MsgBox
"Last Error: "
+ sTmp.Substring(0, i1);
}
}