logo separator

[mkgmap-dev] DEM file and the block-size option

From Andrzej Popowski popej at poczta.onet.pl on Sat Jan 13 00:34:44 GMT 2018

Hi,

here is attached temporary fix for block-size. List of changes:
* Default block size for img set to 1k. This allows for img up to 64MB. 
User can change this value with option --block-size.
* Block size for overview map fixed at 1k. Not changeable by user.
* Block size for MDR fixed at 16k. Not changeable by user.
* Corrected number of reserved directory blocks for MDR, reduces size of 
MDR by 3MB.

I have added a comment about calculation of reserved directory blocks, 
I'm not sure if code is wrong, but it does not exactly what comments 
describe.

-- 
Best regards,
Andrzej
-------------- next part --------------
Index: src/uk/me/parabola/imgfmt/app/map/Map.java
===================================================================
--- src/uk/me/parabola/imgfmt/app/map/Map.java	(revision 4048)
+++ src/uk/me/parabola/imgfmt/app/map/Map.java	(working copy)
@@ -312,7 +312,7 @@
 
 		// A header slot is always 512 bytes, so we need to calculate the
 		// number of blocks if the block-size is different.
-		// There are 2 slots for the header itself.
+		// There are 2 slots for the header itself. (slots or blocks? code adds blocks)
 		int blocksRequired = 2 + headerSlotsRequired * 512 / blockSize;
 
 		param.setReservedDirectoryBlocks(blocksRequired);
Index: src/uk/me/parabola/mkgmap/combiners/MdrBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/combiners/MdrBuilder.java	(revision 4048)
+++ src/uk/me/parabola/mkgmap/combiners/MdrBuilder.java	(working copy)
@@ -87,7 +87,10 @@
 		try {
 			// Create the .img file system/archive
 			FileSystemParam params = new FileSystemParam();
-			params.setBlockSize(args.get("block-size", 16384));
+			// prepare for index size up to 1GB
+			params.setBlockSize(16384);
+			// reduce maximum blocks number reserved for directory, exact value should be calculated instead
+			params.setReservedDirectoryBlocks(1 + 280*512/params.getBlockSize());
 
 			tmpName = File.createTempFile("mdr", null, new File(outputDir));
 			tmpName.deleteOnExit();
Index: src/uk/me/parabola/mkgmap/combiners/OverviewBuilder.java
===================================================================
--- src/uk/me/parabola/mkgmap/combiners/OverviewBuilder.java	(revision 4048)
+++ src/uk/me/parabola/mkgmap/combiners/OverviewBuilder.java	(working copy)
@@ -168,7 +168,7 @@
 		mb.setEnableLineCleanFilters(false);
 
 		FileSystemParam params = new FileSystemParam();
-		params.setBlockSize(512);
+		params.setBlockSize(1024);
 		params.setMapDescription(areaName);
 		mb.setCopyrights(creMsgList(copyrightMsgs));
 		mb.setMapInfo(creMsgList(licenseInfos));
Index: src/uk/me/parabola/mkgmap/CommandArgs.java
===================================================================
--- src/uk/me/parabola/mkgmap/CommandArgs.java	(revision 4048)
+++ src/uk/me/parabola/mkgmap/CommandArgs.java	(working copy)
@@ -43,7 +43,7 @@
 	// ////
 
 	public int getBlockSize() {
-		return get("block-size", 512);
+		return get("block-size", 1024);
 	}
 
 	public String getMapname() {


More information about the mkgmap-dev mailing list