10권으로 이루어진 『아방강역고(我邦彊域考)』의 일부이며, 장지연(張志淵)이 1903년(광무 7) 『아방강역고』를 다시 교보(校補)하여 서명을 『대한강역고(大韓疆域考)』로 바꾸어 출판한 서적의 제5권이 이 『발해고(渤海考)』이다.
발해왕국은 5경 15부 62주로 나뉘어 있었음이 『신당서(新唐書)』「발해전」에 밝혀져 있으나, 그 위치에 대한 설명이 매우 불충분하기 때문에 자칫하면 실재한 위치와 전혀 다른 곳으로 비정되기 쉽다.
특히 발해왕국을 멸망시킨 요나라는 발해국 유민을 강제로 다른 곳으로 이주시키고 새 거주지에 발해국시대의 옛 이름을 그대로 붙이게 하였다. 이에 따라 『요사(遼史)』 지리지는 발해 유민이 새로 이주한 땅에 붙인 옛 발해왕국의 지명을 그대로 적어 넣고 있어, 이를 발해왕국시대의 지명인 것으로 착각하기 쉽다.
명나라에서 1461년(天順 5) 이현(李賢) 등이 칙명을 받들어 엮은 『대명일통지(大明一統志)』나 또 1683년(康熙 23)에 엮은 『성경통지(盛京通志)』 등은 모두 『요사』 지리지의 영향으로 발해국의 지명을 전혀 사실과 맞지 않게 비정하고 있다.
예를 들어 두만강 하류에 있던 발해왕국 중경현덕부(中京顯德府)의 위치를 『대명일통지』나 『성경통지』에서 모두 그 반대편인 요동반도의 해성(海成) 부근으로 비정하고 있는데, 이는 『요사』 지리지의 영향이었다.
『발해고』에서 정약용이 비정한 발해국 5경의 위치를 살펴보면 아래와 같다.
① 상경용천부(上京龍泉府): 지금의 목단강 유역인 옛 홀한하(忽汗河) 유역의 영고탑(寧古塔) 부근 고성(古城)지로 보고 있다.
② 중경현덕부: 대조영이 처음 건국의 터전을 닦았던 구국(舊國)이 중경현덕부가 된 곳으로 추단(推斷)하고, 이를 지금의 경박호(鏡泊湖) 남쪽 200리 지점에 있는 액돈산(額敦山) 부근으로 비정하고 있다.
③ 동경용원부(東京龍原府): 지금의 함경북도 종성(鍾城)의 동관진(潼關鎭)에 있는 옛 성터로 비정하고 있다.
④ 남경남해부(南京南海府): 오늘날의 함경남도 함흥으로 비정하고 있다.
⑤ 서경압록부(西京鴨綠府): 평안북도 자성(慈城)의 북쪽으로 압록강을 건너 요나라의 녹주(綠州)가 있던 곳을 이에 비정하고 있다.
위의 5경 중 상경용천부는 『성경통지』 등을 참고로 비정한 것이며, 1933년 이후 여러 차례의 유적 발굴로 그 정확성이 밝혀졌다. 나머지의 위치비정에 대해서는 그 뒤에도 많은 이설이 나왔다.
그러나 중경현덕부의 경우 정약용은 『신당서』에 따라 발해국의 건국자 대조영이 처음 나라의 터전을 마련했다는 ‘구국(舊國)’과 동일한 곳이라는 전제하에 돈화성(敦化城) 부근의 액돈산으로 비정했으나, 1940년대 이후의 두만강 하류 돈화 부근의 발해유적 발굴 결과 그 위치가 화룡현 서고성자(西古城子)인 것으로 밝혀졌다. 또 ‘구국’은 중경현덕부와 같은 곳이 아니라 돈화성의 오동산성(敖東山城)이었던 것으로 밝혀졌다.
동경용원부 역시 1942년 일본학자들의 발해유적 발굴을 통해 두만강 하류인 혼춘(琿春)의 반랍성지(半拉城址)로 밝혀져 중경현덕부와 더불어 정약용의 비정이 빗나간 것이 분명해졌다. 그러나 남경남해부에 대한 비정은 여러 학설 중에서 정약용의 함흥설이 거의 정설시되고 있을 뿐 아니라, 서경압록부도 아직은 유력한 설의 하나로 꼽히고 있다.
이 밖에 발해국의 솔빈부(率濱府)·정리부(定理府) 등의 위치는 연해주(沿海州)의 니콜리스크(Nikolisk) 또는 그 북쪽의 올가(Olga) 유역이었음이 분명한데, 정반대쪽인 동가강 유역 또는 심양(瀋陽) 부근으로 비정하는 등 많은 오류가 발견된다.
많은 오류에도 불구하고, 『발해고』가 전문 연구자들에게 높이 평가되고 있는 것은, 거의 정설시되어 있던 종래의 여러 학설에 대해 세밀히 재검토하고 날카롭게 비판하여 새로운 학문의 경지를 개척했다는 점에 있다.