⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shapefilereader.htm

📁 用java编写的读取shapefile的源程序
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0050)file://T:\网友原创\sharecode\Java2\ShapeReader.htm -->
<!-- saved from url=(0063)file://T:\网友原创\sharecode\java\ShapefileReader.files\bbs.htm --><!-- saved from url=(0148)http://china.gischina.com/cgi-bin/bbs30/bbs.cgi?job=click_1&userno=20010516083422&do=board&key_input=gisforum&bbstitle=地理信息技术论坛-地理信息系统 --><HTML><HEAD><TITLE>地理信息技术论坛-地理信息系统</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type>
<STYLE type=text/css>A {
	TEXT-DECORATION: none
}
A:hover {
	COLOR: #3a5034; TEXT-DECORATION: underline
}
TD {
	FONT-SIZE: 9pt
}
</STYLE>

<META content="MSHTML 5.00.2920.0" name=GENERATOR>
<STYLE fprolloverstyle>A:hover {
	COLOR: #ff0000
}
</STYLE>
</HEAD>
<BODY leftMargin=0 link=#006699 text=#006699 topMargin=0 vLink=#006699>
<DIV align=center>
<CENTER>
<TABLE border=0 cellPadding=0 cellSpacing=0 height=20 width=629>
  <TBODY>
  <TR>
    <TD height=20 width=625>
      <CENTER>
      <H2><FONT 
face=黑体>地理信息技术论坛-GIS</FONT></H2></CENTER></TD></TR></CENTER></TBODY></TABLE></DIV>
<DIV align=center>
<CENTER>
<TABLE border=1 borderColorDark=#79bcff borderColorLight=#79bcff cellPadding=0 
cellSpacing=0 height=20 width=629>
  <TBODY>
  <TR>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom width=104> </TD>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom width=104> </TD>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom width=104> </TD>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom width=105> </TD>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom width=105> </TD>
    <TD align=middle bgColor=#dfefff height=20 vAlign=bottom 
  width=105> </TD></TR></TBODY></TABLE></CENTER></DIV>
<DIV align=center>
<CENTER>
<TABLE border=0 cellSpacing=1 height=30 width=629>
  <TBODY>
  <TR>
    <TD align=middle colSpan=6 height=30 width=620>
      <P 
    align=center><STRONG><!--list-->ShapefileReader.java(源码故乡)</STRONG></P></TD></TR>
  <TR>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=54>发表人:</TD></CENTER>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=152>
      <P align=left><A 
      href="http://china.gischina.com/cgi-bin/bbs30/per.cgi?username=gml">gml</A></P></TD>
    <CENTER>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=52>E-mail:</TD></CENTER>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=155>
      <P align=left><A href="mailto:gmliao@sina.com">gmliao@sina.com</A></P></TD>
    <CENTER>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=53>主页:</TD></CENTER>
    <TD align=middle height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=154>
      <P align=left><A href="http:///" target=_blank>http://</A></P></TD></TR>
  <CENTER>
  <TR>
    <TD height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=54>
      <P align=center>类型:</P></TD></CENTER>
    <TD colSpan=5 height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=570>
      <P align=left><IMG src="ShapeFileReader.files/1.gif"> 随便说说 </P></TD></TR>
  <CENTER>
  <TR>
    <TD height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=54>
      <P align=center>标题:</P></TD></CENTER>
    <TD colSpan=5 height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=570>
      <P align=left>ShapefileReader.java(源码故乡)</P></TD></TR>
  <CENTER>
  <TR>
    <TD height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=54>
      <P align=center>内容:</P></TD></CENTER>
    <TD colSpan=5 height=20 
    style="BORDER-BOTTOM: #79bcff 1px solid; BORDER-LEFT: #79bcff 1px solid; BORDER-RIGHT: #79bcff 1px solid; BORDER-TOP: #79bcff 1px solid" 
    width=570>
      <P align=left><BR>import java.awt.Color;<BR>import java.io.*;<BR>import 
      java.net.URL;<BR>import java.net.URLConnection;<BR>import 
      java.util.zip.*;<BR>import 
      uk.ac.leeds.ccg.dbffile.DbfFileException;<BR>import 
      uk.ac.leeds.ccg.dbffile.DbfNet;<BR>import 
      uk.ac.leeds.ccg.shapefile.*;<BR><BR>public class 
      ShapefileReader<BR>{<BR>public Shapefile sf;<BR>public DbfNet 
      dbf;<BR>private int idCol;<BR>private String name;<BR><BR>public 
      ShapefileReader(String baseFilename)<BR>{<BR>super();<BR>sf = null;<BR>dbf 
      = null;<BR>idCol = 3;<BR>name = "none";<BR>name = 
      baseFilename;<BR>try<BR>{<BR>sf = new Shapefile(baseFilename + 
      ".shp");<BR>}<BR>catch(Exception 
      e)<BR>{<BR>System.out.println(e);<BR>}<BR>}<BR><BR>public 
      ShapefileReader(URL base, int idCol)<BR>{<BR>super();<BR>sf = null;<BR>dbf 
      = null;<BR>this.idCol = 3;<BR>name = "none";<BR>this.idCol = 
      idCol;<BR>name = base.getFile();<BR>String sub = 
      "";<BR>if(name.indexOf(63) &gt;= 0)<BR>sub = 
      name.substring(name.indexOf(63), 
      name.lastIndexOf(47));<BR>System.out.println("Sub " + sub);<BR>boolean 
      shpZip = false;<BR>boolean dbfZip = 
      false;<BR>try<BR>{<BR>System.out.println("SFR: Looking for .zip version of 
      " + name);<BR>String ext = ".zip";<BR>String noExt = 
      base.getFile();<BR>System.out.println("No Ext " + 
      noExt);<BR>if(noExt.toLowerCase().endsWith(".shp") 
      noExt.toLowerCase().endsWith(".zip"))<BR>noExt = name.substring(0, 
      name.length() - 4);<BR>System.out.println("No Ext " + noExt);<BR>URL 
      zipURL = new URL(base.getProtocol(), base.getHost(), base.getPort(), noExt 
      + ext);<BR>System.out.println("zip url = " + zipURL);<BR>URLConnection uc 
      = 
      zipURL.openConnection();<BR>uc.setUseCaches(false);<BR>uc.setDefaultUseCaches(false);<BR>System.out.println("Opening 
      zis");<BR>int size = uc.getContentLength();<BR>if(size != -1)<BR>{<BR>byte 
      buf1[] = new byte[size];<BR>byte got[] = new byte[size / 
      10];<BR>InputStream is = uc.getInputStream();<BR>int grab = 0;<BR>for(int 
      total = 0; (grab = is.read(got)) &gt; -1; total += 
      grab)<BR>System.arraycopy(got, 0, buf1, total, grab);<BR><BR>got = 
      null;<BR>ByteArrayInputStream zipfile = new 
      ByteArrayInputStream(buf1);<BR>ZipInputStream zis = new 
      ZipInputStream(zipfile);<BR>System.out.println("Looking for 
      entries");<BR>ZipEntry ze;<BR>while((ze = zis.getNextEntry()) != null 
      &amp;&amp; (!shpZip !dbfZip)) <BR>{<BR>System.out.println("Found 
      entry");<BR>System.out.println(ze);<BR>System.out.println("Entry: " + 
      ze.getName());<BR>System.out.println("Getting 
      entry");<BR>if(ze.getName().toLowerCase().endsWith(".shp"))<BR>{<BR>name = 
      ze.getName();<BR>System.out.println("Found .shp in zip file");<BR>size = 
      (int)ze.getSize();<BR>byte buf[] = new byte[size];<BR>byte in[] = new 
      byte[size];<BR>int n = 0;<BR>for(int index = 0; (n = zis.read(in)) &gt; 
      -1; index += n)<BR>System.arraycopy(in, 0, buf, index, 
      n);<BR><BR>zis.closeEntry();<BR>ByteArrayInputStream bais = new 
      ByteArrayInputStream(buf);<BR>sf = new Shapefile(bais);<BR>shpZip = 
      true;<BR>}<BR>else<BR>if(ze.getName().toLowerCase().endsWith(".dbf"))<BR>{<BR>System.out.println("Found 
      .dbf in zip file");<BR>size = (int)ze.getSize();<BR>byte buf[] = new 
      byte[size];<BR>byte in[] = new byte[size];<BR>int n;<BR>for(int index = 0; 
      (n = zis.read(in)) &gt; -1; index += n)<BR>System.arraycopy(in, 0, buf, 
      index, n);<BR><BR>zis.closeEntry();<BR>ByteArrayInputStream bais = new 
      ByteArrayInputStream(buf);<BR>dbf = new DbfNet(bais);<BR>dbfZip = 
      true;<BR>}<BR>}<BR><BR>if(shpZip &amp;&amp; 
      dbfZip)<BR>{<BR>System.out.println("Zip file version used " + 
      name);<BR>return;<BR>}<BR>}<BR>}<BR>catch(ZipException 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -