[gdal-dev] Re: C GDAL beginner

deadpickle deadpickle at gmail.com
Wed Mar 3 18:47:32 EST 2010


Thanks for the replies. Just as a note, the warnings are caused by the
variable being a const. Omitting the const solved it.
I'm not sure if this is a C program or a GDAL thing, thats why I'm not
sure where to post this at, but I get a segfault. I know segfaults are
generally caused by ordinary, and sometimes strange, syntax but it
involves a GDAL C API call, so I'll post it here. Basically, from what
I understand from printing, the esgfault is caused by
OSRSetFromUserInput(source, sprj);
where char *source;
 OSRNewSpatialReference(source);
 and const char *sprj = "+proj=lcc +lat_1=33.000000 +lat_2=45.000000
+lat_0=39.000000 +lon_0=-96.000000 +x_0=0.0 +y_0=0.0 +datum=NAD83";.
 what I'm wondering is if I'm calling these correctly? Is the proj4
string right? If they are then I'll redirect my questions else where.
Thanks.

#include "ogr_api.h"
#include "ogr_srs_api.h"
#include "stdio.h"

int main()
{
	//~ variable declaration
	const char *name = "testc.shp", *dir = "C:\\Users\\deadpickle\\Desktop
\\case study\\verify\\";
	char *source, *target;
	const char *sprj = "+proj=lcc +lat_1=33.000000 +lat_2=45.000000
+lat_0=39.000000 +lon_0=-96.000000 +x_0=0.0 +y_0=0.0 +datum=NAD83";
	const char *tprj = "WGS84";
	char c[100];
	OGRSFDriverH driver;
	OGRDataSourceH ds;
	OGRCoordinateTransformationH ctrans;
	OGRLayerH layer;
	OGRFieldDefnH fieldDefn;
	OGRGeometryH line;
	OGRFeatureDefnH featureDefn;
	OGRFeatureH feature;
	FILE *file;

	//~ working directory
	chdir(dir);

	OGRRegisterAll();

	//~ get driver and create ds
	driver = OGRGetDriverByName("ESRI Shapefile");
	ds = OGR_Dr_CreateDataSource(driver, "testc.shp", NULL);

	if(ds == NULL) {
		printf("Creation of output file failed.\n");
		exit(1);
	}

	printf("HERE1\n");

	//~ create spatrefs and trans
	OSRNewSpatialReference(source);
	OSRNewSpatialReference(target);

	OSRSetFromUserInput(source, sprj);

	printf("HERE2\n");

	OSRSetFromUserInput(target, tprj);

	printf("HERE3\n");

	ctrans = OCTNewCoordinateTransformation(target, source);

	//~ create the layer
	layer = OGR_DS_CreateLayer(ds, "testc", source, wkbMultiLineString,
NULL);

	//~ add an id field
	fieldDefn = OGR_Fld_Create("id", OFTInteger);
	OGR_L_CreateField(layer, fieldDefn, FALSE);

	//~ create geometry
	line = OGR_G_CreateGeometry(wkbMultiLineString);

	//~ layer def and create feature
	featureDefn = OGR_L_GetLayerDefn(layer);
	feature = OGR_F_Create(featureDefn);

	//~ open file
	file = fopen("2006track.csv","r");

	if(file==NULL) {
		printf("Error: can't open file.\n");
		/* fclose(file); DON'T PASS A NULL POINTER TO fclose !! */
		return 1;
	}
	else {
		printf("File opened successfully. Contents:\n\n");

		while(fgets(c, 100, file)!=NULL) {
			/* keep looping until NULL pointer... */
			printf("String: %s", c);
			/* print the file one line at a time  */
		}

		printf("\n\nNow closing file...\n");
	}

	//~ close file
	fclose(file);
}


On Mar 3, 5:15 am, Mateusz Loskot <mate... at loskot.net> wrote:
> You need to buy a book about C/C++ or ask on comp.lang.c or comp.lang.c++
>
> Best regards,
>
> -----
> --
> Mateusz Loskothttp://mateusz.loskot.net
> --
> View this message in context:http://n2.nabble.com/gdal-dev-C-GDAL-beginner-tp4665330p4666854.html
> Sent from the GDAL - Dev mailing list archive at Nabble.com.
> _______________________________________________
> gdal-dev mailing list
> gdal-... at lists.osgeo.orghttp://lists.osgeo.org/mailman/listinfo/gdal-dev


More information about the gdal-dev mailing list