投稿者 snowmansnow  (社会人) 投稿日時 2021/12/28 20:03:23

 こんばんは、国土交通省の街区csvデータをbitmapに描画しようとしました。
 'https://nlftp.mlit.go.jp/cgi-bin/isj/dls/_choose_method.cgi
 'http://www5a.biglobe.ne.jp/~kkw_pl2/kkwvbs/vbabitmap.htmを参考に作ってみました。
 でも、約3000件程度を上限に、bitmapに描画できないエラーになりました。
 1都道府県約30万件、47都道府県約1400万件を描画してみたいです。

 
Option Explicit
Private Type BITMAPFILEHEADER
       bfType       As String * 2
       bfSize       As Long
       bfReserved1  As Integer
       bfReserved2  As Integer
       bfOffBits    As Long
End Type

Private Type BitmapInfoHeader
    biSize  As Long
    biWidth As Long
    biHeight As Long
    biPlanes As Integer
    biBitCount As Integer
    biCompression As Long
    biSizeImage As Long
    biXPelsPerMeter As Long
    biYPelsPerMeter As Long
    biClrUsed As Long
    biClrImportant As Long
End Type

Private Type BITMAPINFO
    bmiHeader As BitmapInfoHeader
End Type

Private Declare PtrSafe Function GetDC Lib "user32" (ByVal hwnd As LongAs Long
Private Declare PtrSafe Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As LongAs Long
Private Declare PtrSafe Function CreateDIBSection Lib "gdi32" (ByVal hdc As Long, pbmi As BITMAPINFO, _
                                                    ByVal iUsage As LongByVal ppvBits As Long, _
                                                    ByVal hSection As LongByVal dwOffset As LongAs Long
Private Declare PtrSafe Function GetDIBits Lib "gdi32" (ByVal aHDC As LongByVal hBitmap As Long, _
                                                ByVal nStartScan As LongByVal nNumScans As Long, _
                                                lpBits As Any, lpBI As BITMAPINFO, _
                                                ByVal wUsage As LongAs Long
Private Declare PtrSafe Function SelectObject Lib "gdi32.dll" (ByVal hdc As LongByVal hgdiobj As LongAs Long
Private Declare PtrSafe Function DeleteObject Lib "gdi32.dll" (ByVal hObject As LongAs Long
Private Declare PtrSafe Function ReleaseDC Lib "user32" (ByVal hwnd As LongByVal hdc As LongAs Long
Private Declare PtrSafe Function CreatePen Lib "gdi32.dll" (ByVal fnPenStyle As LongByVal nWidth As Long, _
                                                    ByVal crColor As LongAs Integer
Private Declare PtrSafe Function GetStockObject Lib "gdi32" (ByVal nIndex As LongAs Long
Private Declare PtrSafe Function Rectangle Lib "gdi32" (ByVal hdc As Long, _
                                                ByVal X1 As LongByVal Y1 As Long, _
                                                ByVal X2 As LongByVal Y2 As LongAs Long

Private Const PS_SOLID = 0
Private Const WHITE_BRUSH = 0
Private Const GRAY_BRUSH = 2
Private Const CWIDTH = 1500
Private Const CHEIGHT = 1500